现在的位置: 首页 > 综合 > 正文

在SSH或者SSI项目里整合axis2

2013年07月02日 ⁄ 综合 ⁄ 共 3912字 ⁄ 字号 评论关闭

自从毕业后也算是看过好些个项目了,有的项目没有使用任何框架,有的使用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就发布成功了

很简单吧!得意

抱歉!评论已关闭.