您的位置:首页 > 其它

XFire创建客户端的三种方式

2010-12-21 14:53 411 查看
wsdlDocumentURL 代表 wsdl所对应的URL

1、通过URLConnection创建连接,然后invoke相应接口

优点:调用简单

缺点:传递封装对象比较麻烦

// wsdlDocumentURL必须是全地址(包含?wsdl)
URL url = new URL(wsdlDocumentURL);
URLConnection connection = url.openConnection();
Client client = new Client(connection.getInputStream(), null);
// invoke接口方法
// 接口返回Object数组
Object[] result = client.invoke("methodName", new Object[]{});

org.codehaus.xfire.service.Service serviceModel = new ObjectServiceFactory().create(接口.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
IEmailBindHandlerService handler = (IEmailBindHandlerService) factory.create(serviceModel, wsdlURL);


2、XFireProxyFactory创建客户端实例

客户端需要明确知道接口详细信息

org.codehaus.xfire.service.Service serviceModel = new ObjectServiceFactory().create(IEmailBindHandlerService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
接口 handler = (IEmailBindHandlerService) factory.create(serviceModel, wsdl地址);


3、通过eclipse自动生成webservice client

4、通过org.codehaus.xfire.spring.remoting.XFireClientFactoryBean构建客户端实例

<bean id="baseService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean" abstract="true">
<property name="serviceFactory" ref="xfire.serviceFactory" />
<!-- <property name="lookupServiceOnStartup" value="false" /> -->
<property name="properties">
<props>
<!-- 等待HttpConnectionManager从连接池中返回空闲连接的超时时间 -->
<prop key="http.connection.manager.timeout">1000</prop>
<!-- 等待建立连接的超时时间 -->
<prop key="http.connection.timeout">3000</prop>
<!-- 等待服务器返回数据超时时间 -->
<prop key="http.timeout">10000</prop>
<!-- 连接到单个服务器的连接数上限 -->
<prop key="max.connections.per.host">10</prop>
<!-- 连接到所有服务器的连接个数上限 -->
<prop key="max.total.connections">80</prop>
</props>
</property>
</bean>

<bean id="接口实例" parent="baseService">
<property name="serviceClass" value="接口地址" />
<property name="wsdlDocumentUrl" value="${xfireServerURL}/webservice名称?wsdl" />
</bean>


使用该配置方法的话,可以通过注入实现调用,同时可以减少手动创建URLConnection之后忘记关闭连接的尴尬

只是如果使用该方法的时候,需要在web.xml中添加如下配置

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
</context-param>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: