现在2种需求用到了webservice
一种是微信的模板消息要推送,使用spring-quartz推送消息
一种是为客户端写接口,客户端通过连接webservice传参数获取返回值
使用了2种方法发布webservice服务,感觉axis2 集成spring的比较好用
先说第一种xstream创建webservice
在webroot下建立个文件件 结构如下
services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<!-- webserviceq名称,调用时需要指定这个 -->
<name>templatemesservice</name>
<!-- 接口类 -->
<serviceClass>service.TemplateMesService</serviceClass>
<!-- 实现类 -->
<implementationClass>serviceimpl.TemplateMesServiceimpl</implementationClass>
</service>
还需要配置web.xml,注册XFireServlet
web,xml
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
需要注意的是建立webservice 的service必须要有接口和实现类
不然会提示失败
访问地址http://localhost:8080/htllo/services/templatemesservice?wsdl
第二种axis2 集成spring
结构一样
service.xml
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<!-- webservice名字 -->
<service name="helloService">
<description>helloService</description>
<parameter name="ServiceObjectSupplier"><!-- 固定的不变 -->
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<parameter name="SpringBeanName">helloService</parameter><!-- bean名字 -->
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
<parameter name="ServiceClass"> <!-- bean的地址 -->
com.ysh.service.helloService
</parameter>
</service>
</serviceGroup>
web.xml
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name>
<servlet-name>AxisAdminServlet</servlet-name>
<servlet-class>
org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisAdminServlet</servlet-name>
<url-pattern>/axis2-admin/*</url-pattern>
</servlet-mapping>
pom.xml
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-spring</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.4.0</version>
</dependency>
不需要建接口,直接把service注入,service.xml取的也是bean名字.
自己留存