所需jar包:
xfire-all-1.2.6.jar
xfire-jsr181-api-1.0-M1.jar
wsdl4j-1.6.2.jar
jdom-1.0.jar
clientB调用serverA的接口。
1.serverA -web.xml配置:
- <!-- 配置文件加载 要添加xfire的配置文件。否则会找不到xfire.serviceFactory -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext.xml,classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
- </context-param>
- <!-- spring Listener -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- xfire 配置 -->
- <servlet>
- <servlet-name>xfire</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>xfire</servlet-name>
- <url-pattern>*.ws</url-pattern>
- </servlet-mapping>
- xfire默认加载"servletName-servlet".xml(xfire-servlet.xml)
- 如果要自己指定xml可以:
- <servlet>
- <servlet-name>xfire</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:xfire-servlet.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>xfire</servlet-name>
- <url-pattern>*.ws</url-pattern>
- </servlet-mapping>
2.serverA的 xfire-servlet.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <!-- webService基类 -->
- <bean id="webService" class="org.codehaus.xfire.spring.remoting.XFireExporter" abstract="true">
- <property name="serviceFactory">
- <ref bean="xfire.serviceFactory" />
- </property>
- <property name="xfire">
- <ref bean="xfire" />
- </property>
- </bean>
- <!-- 实现类接口 -->
- <bean id="xFireTestExporter" parent="webService" class="org.codehaus.xfire.spring.remoting.XFireExporter">
- <property name="serviceBean">
- <ref bean="fairyhawkHessianServiceSupport"/>
- </property>
- <property name="serviceClass">
- <value>com.fairyhawk.service.hessian.FairyhawkHessianServiceSupport</value>
- </property>
- </bean>
- <!-- 路径配置 -->
- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="urlMap">
- <map>
- <entry key="/xFireTestExporter.ws">
- <ref bean="xFireTestExporter"/>
- </entry>
- </map>
- </property>
- </bean>
- </beans>
3.serverA 中的applicationContext.xml中要添加fairyhawkHessianServiceSupport的注册
- <bean id="fairyhawkHessianServiceSupport" class="com.fairyhawk.service.hessian.FairyhawkHessianServiceSupportImpl">
- </bean>
4.ServaerA中提供
com.fairyhawk.service.hessian.FairyhawkHessianServiceSupport
和实现类
com.fairyhawk.service.hessian.FairyhawkHessianServiceSupportImpl
5.serverA给clientB提供接口FairyhawkHessianServiceSupport。可以复制到
clientB下。或者打成jar包。
6.clientB中测试类
- import org.codehaus.xfire.XFireFactory;
- import org.codehaus.xfire.client.XFireProxyFactory;
- import org.codehaus.xfire.service.Service;
- import org.codehaus.xfire.service.binding.ObjectServiceFactory;
- public class TestxFire {
- public static void main(String[] args) {
- try {
- XFireProxyFactory factoryInstance = new XFireProxyFactory(
- XFireFactory.newInstance().getXFire());
- Service srvcModel = new ObjectServiceFactory()
- .create(FairyhawkHessianServiceSupport.class);
- FairyhawkHessianServiceSupport iWebService;
- iWebService = (FairyhawkHessianServiceSupport) factoryInstance
- .create(srvcModel, "http://127.0.0.1/opens_admin/xFireTestExporter.ws");
- // 具体调用
- System.out.println(iWebService.getUser(null).get("user"));
- } catch (MalformedURLException e) {
- e.printStackTrace();
- }
- }
- }
另 有用nginx的x有时给屏蔽掉了。需要加上ws
- location ~ \.(ws|jsp|jspx|do|action|ws)?$ {
- proxy_next_upstream http_502 http_504 error timeout invalid_header;
- proxy_set_header Host $host;
- proxy_set_header X-Forwarded-For $remote_addr;
- proxy_pass http://tomcat_server1;
发布于2012-05-07
浙公网安备 33010602011771号