加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

基于xFire的webService例子

发布时间:2020-12-17 00:11:40 所属栏目:安全 来源:网络整理
导读:最近在搞webService,结合网上的例子自己故总结一下,带大家利用xfire做一个webService接口,同时和spring相结合,相关的xfire的jar包,可以到xfire的官网上下载,然后在加上spring mvc ,spring等jar。。废话不多说,let's??go 1创建一个简单的SayXFireServ

最近在搞webService,结合网上的例子自己故总结一下,带大家利用xfire做一个webService接口,同时和spring相结合,相关的xfire的jar包,可以到xfire的官网上下载,然后在加上spring mvc ,spring等jar。。废话不多说,let's??go
1创建一个简单的SayXFireService接口,里面只有一个sayHello的方法
public interface SayXFireService {
? ?? ?public String sayHello(String name);
}
2创建其实现类,实现方法很简单,简单的输出一句话而已:
public class SayXFireServiceImpl implements SayXFireService{
@Override
public String sayHello(String name) {
? ?? ?return name+",你好,这是我的第一个XFire demo";
}
}
3在context.xml文件中定义它的bean ,我这里beanId定义为com.mip.biz.webservice.xfire.server.service.sayXFireService
上面的基本上就是我们平时写一个service没什么区别,关键在下面的配置文件中。
4在配置文件夹中创建xfire-servlet.xml文件,配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
?<!-- 若是web.xml已经配置了org/codehaus/xfire/spring/xfire.xml,这里就不需要配置了 -->
?<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
?<bean id="baseExporter" class="org.codehaus.xfire.spring.remoting.XFireExporter"
??lazy-init="false" abstract="true">
??<property name="serviceFactory" ref="xfire.serviceFactory" />
??<property name="xfire" ref="xfire" />
??<property name="outHandlers">
???<list>
????<ref bean="domOutHandler" />
????<ref bean="soapOutHandler" />
???</list>
??</property>
??<property name="inHandlers">
???<list>
????<ref bean="domInHandler" />
???</list>
??</property>
?</bean>

?<bean id="domOutHandler" class="org.codehaus.xfire.util.dom.DOMOutHandler" />
?<!-- 拦截器,自己写一个,不需要做什么的具体类在下面 -->
?<bean id="soapOutHandler"
??class="com.mip.biz.webservice.xfire.server.handler.SoapOutHandler" />
?<bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler" />
?<!--
??定义访问的url,但是web.xml需要配置org.springframework.web.servlet.DispatcherServlet
?-->
?<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
??<property name="urlMap">
???<map>
????<!-- test?? 这里可以写多个,你有几个webservice 写几个entry? ref指向下面你写的bean-->
????<entry key="/sayXfire.ws">
?????<ref bean="sayXfireExporter" />
????</entry>
????<!-- test -->
???</map>
??</property>
?</bean>
?<!-- hello webservice -->
?<bean id="sayXfireExporter" parent="baseExporter">
??<!-- 用到的实现类的bennId -->
??<property name="serviceBean" ref="com.mip.biz.webservice.xfire.server.service.sayXFireService" />
??<!-- 当前service对应的接口名称 -->
??<property name="serviceClass"
???value="com.mip.biz.webservice.xfire.server.service.SayXFireService" />
??<!-- 发布的webService名称 -->
??<property name="name" value="sayXfire" />
?</bean>
?<!-- hello webservice -->
</beans>

上面的soapOutHandler我们需要自己创建,不需要做什么,不过可以输出其信息
public class SoapOutHandler extends AbstractHandler {
? ? public void invoke(MessageContext mc) throws Exception {
? ?? ?? ? //每次调用接口会输出信息
? ?? ?? ?// System.err.println(mc.getCurrentMessage());
? ? }
}
其他的看下配置文件中的注释就可以瞬间明白了
5最后看下web.xml文件中需要添加的配置,其实本质和我们添加一个servlet的配置一个样,添加的代码如下
??<!-- xfire webservice start -->??
<!-- 它主要负责处理由 JavaBean Introspector 功能而引起的缓存泄露 -->
<listener>
??<listener-class>
? ?org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- 注意因为servlet-name为xfire,固xfire配置文件名应该是xfire-servlet.xml -->
<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>
<!-- 配合Spring容器中XFire一起工作的Servlet- -->
<servlet>
??<servlet-name>xfireServlet</servlet-name>
??<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
??<servlet-name>xfireServlet</servlet-name>
??<url-pattern>/xfireServices/*</url-pattern>
</servlet-mapping>
? ?<!-- xfire webservice end -->
上面红色标记的是不是就是配置一个servlet!!!!
最后记得将下面的红色部分加进去
<context-param>
??<param-name>contextConfigLocation</param-name>
??<param-value>

<!--??其他的配置文件--->
???classpath*:context/core-context.xml,

? <!-- xfire的配置文件-->
???classpath:context/xfire-servlet.xml
??</param-value>
</context-param>
好了,到这里基本上配置完全搞定了,启动tomcat后在浏览器输入
http://localhost:8080/mip/xfireServices/sayXfire?wsdl看会输出什么内容吧,行动吧,少年!
如果输出的内容的最后有如下:
<wsdl:service name="sayXfire">
- <wsdl:port name="sayXfireHttpPort" binding="tns:sayXfireHttpBinding">
<wsdlsoap:address location="http://localhost:8080/mip/xfireServices/sayXfire" />
</wsdl:port>
</wsdl:service>

亲,你成功的发布了一个webService,从上面的一段中我们可以看到我们发布的服务名sayXfire,发布地址为http://localhost:8080/mip/xfireServices/sayXfire
最后,给大家再提供一个一个测试类
public class Test {
public static void main(String[] args) {
??Service serviceModel = new ObjectServiceFactory().create(SayXFireService.class);
??XFire xfire=XFireFactory.newInstance().getXFire();
??XFireProxyFactory factory=new XFireProxyFactory(xfire);
??String serviceUrl = "http://localhost:8080/mip/xfireServices/sayXfire"; ??SayXFireService service= null; ??try { ? ?service=(SayXFireService)factory.create(serviceModel,serviceUrl); ??} catch (MalformedURLException e) { ? ?e.printStackTrace(); ??} ??System.out.println(service.sayHello("zhangsan")); } } 运行application后在控制台输出了 zangsan,你好,这是我的第一个XFire demo 测试成功 ok,xfire的简单demo搞定了。。。具体细节大家可以继续去查找资料。。。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读