自从毕业后也算是看过好些个项目了,有的项目没有使用任何框架,有的使用SSH有的则是SSI. 相比之下还是觉得SSI是最方便最快捷的,特别是在webservice的开发这一块上,ibatis的效果还是很出色的,它不像hibernate那样会出现对象循环引用的问题在程序的开发上也是很好控制的。在webservice的开发方面有的人使用Ant工具生成客户端来使用,这样的缺点就是打包麻烦程序也不灵活,试想一下如果webservice所在服务器的IP发生变动那就会出现类似404这样的错误。这样简直就是要恶心死人的。
webservice这一块使用cxf是最简单的,xfire的话就很麻烦,当然了使用axis2也不比cxf差。目前axis2的发行版本已经到1.6.2了,个人觉得SOA太恶心了要安装那么多的东西速度也不是很快。下面就和大家分享下我做webservice开发的过程
1.下载axis开发包,我这里选择war包,导入eclipse里就能看到项目了开发包自然是在lib下面了。把他们全部拷贝出来放在项目里就Ok了
2.axis2的结构
对于axis2-web就放的是一些页面了,其中包含webservice接口的显示页面和axis2的错误页面等。WEB-INF下面的conf下面的axis2、modules,services是axis的j配置
尤其需要注意的是哪个aar包,开发的时候我们首先把conf、modules、services文件夹拷贝到项目的WEB-INF下面,axis2-web就放在站点根目录下面,web.xml则加入如下配置
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>inc</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>/axis2-web/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/axis2-web/Error/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/axis2-web/Error/error500.jsp</location>
</error-page>
到这里工作就完成一半了,下面的工作就是重新打那个aar包了。在日常的项目里一般来说我们一般把webservice单独拿出来写在一个配置文件里就像下面这样
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean name="HealthspecialytypeWebService" class="com.utsmart.huiju.webService.healthspecialtytype.HealthspecialtytypeWebService" autowire="byName">
<property name="healthspecialytypeManager" ref="HealthspecialytypeManager"></property>
</bean>
<bean name="HealthinfoWebService" class="com.utsmart.huiju.webService.health.HealthWebService" autowire="byName">
<property name="healthManager" ref="HealthManager"></property>
</bean>
</beans>
下面来看下aar包里面到底是什么东西,解压后应该看到2个目录
其中lib下面有2个jar包分别是axis2-spring-1.5.1.jar和spring.jar由于版本的差别可能名称不一样,META-INF下面则是MANIFEST.MF和services.xml.其中services.xml则是接口的配置信息如接口名称和对应的spring的bean名称等
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<!-- 健康教育类别信息 -->
<service name="HealthspecialytypeWebService">
<description>
健康教育类别
</description>
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<parameter name="SpringBeanName">
HealthspecialytypeWebService
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
<!-- 健康教育信息 -->
<service name="HealthinfoWebService">
<description>
健康教育信息
</description>
<parameter name="ServiceObjectSupplier">
org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
</parameter>
<parameter name="SpringBeanName">
HealthinfoWebService
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
</serviceGroup>
下面个大家解释下这个文件应该怎么写
长方形里面的是接口的名称,椭圆里面是该webservice所对应的spring的bean的名称。services.xml修改完成之后下面的工作就是打包了,首先把lib和META-INF这2个文件夹放在一个新建好的文件夹里,只要机子上配置了环境变量就可以直接使用命令打包了
这样打包就OK了,把这个包拷贝在services下面覆盖原来的webservice就发布成功了
3.查看webservice是否发布成功
启动好tomcat后,直接输入下面的地址 http://localhost:8089/utsmart/services/listServices,就可以看到如下的界面
看到类似这样的界面后axis2的webservice就发布成功了
很简单吧!