读书人

在websphere下发布axis1的webservice

发布时间: 2012-10-29 10:03:53 作者: rapoo

在websphere上发布axis1的webservice



????? 由于websphere还在1.4的jdk上, 所以, xfire,cxf 不能在websphere 上运行, 其选择也只能用axis1或axis2了, 最近的一个项目中, 美国的一个中间服务商提供给公司一个webservice接口文件(wsdl), 公司用axis1对其进行了客户端的生成, 经过在生产环境中短时间的测试证明是可运行的, 但是生产环境的数据比较敏感, 一般不给我们这边进行长时间的测试,?所以, 这就要求我们根据wsdl生成服务端的程序模拟这个webservice以供测试, 关于底程的业务逻辑的重构暂且不谈,主要是公司要求用websphere的服务器发布, 于是用websphere自带的webservice进行开发,完成后发布至本地的服务器上进行了测试, 居然有版本冲突的问题,开发工具自带的服务器可以跑,但发布后就报自定义对象不能序列化的错误,实在的头大,于是就放弃继而采用axis1, 以记录实现步骤.

?

???? 1) 开发还是在wsad中进行,以确保其环境可以适应websphere,?通过wsdl生成server端(用ant自动生成,这样可重用).

?

<?xml version="1.0" encoding="UTF-8"?><project name="wsclient" default="all" basedir="."><property name="axis.home" value="C:\axis-1_4" /><property name="options.output" location="../src"/><path id="axis.classpath"><fileset dir="${axis.home}/lib"><include name="**/*.jar" /></fileset></path><taskdef resource="axis-tasks.properties" classpathref="axis.classpath" /><target name="init"><echo>Warning: please update the associated WSDL file(s) in the folder wsdl before running the target!</echo><echo>Warning: Just run the target(s) related with your developing work!</echo><echo></echo></target><target name="-WSDL2Axis" depends="init"><mkdir dir="${options.output}"/><axis-wsdl2java  serverside="true" output="${options.output}" url="${options.WSDL-URI}" verbose="true"/></target><target name="all"><antcall target="XXX.wsdl"/></target><target name="XXXService"><antcall target="-WSDL2Axis"><param name="options.WSDL-URI" location="XXX.wsdl"/></antcall></target></project>

?2) 将生成的deploy.wsdd与undeploy.wsdd拷贝到指定目录, 如果有多个可以合并一下(多个wsdl自动生成)

?3) 在下载X:\axis-1_4\webapps找到axis的目录, 放到wsad中,可据需要重命名项目, 对于其中的*.class的文件最好打个jar包放入lib中.(给个打jar的例子)

<?xml version="1.0" encoding="UTF-8"?><project name="axis" default="tojar" basedir="."><property  name="dirs.classes" value="."/><target name="tojar"><jar destfile="./inner.jar" basedir="${dirs.classes}"/></target></project>

?

?

4) 将生成的server端代码放到JavaSource的包中并加入相关包build, 完成后目录结构如下.

?? 其中deploy.wsdd与undeploy.wsdd是发布文件,在上面已经说过, 这个deploy.bat与undploy.bat是我写的一个快捷批处理, 在程序启动时可以进行发布与删除.



在websphere下发布axis1的webservice
?
?

??

??? deploy.bat

set Axis_Lib=../WEB-INF/libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http://localhost:9080/XXXservice/servlet/AxisServlet%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd 

??

?? ?undeploy.bat

set Axis_Lib=C:\axis-1_4\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http://localhost:9080/XXXservice/servlet/AxisServlet%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% undeploy.wsdd

?这两个批处理要在程序运行起来时执行.

?

另外说明两点:

1: axis的包中少个文件, server-config.wsdd, 不知怎么搞的,内容大了给个下载:

2: 最好在RAD上开发,j2ee可到1.4少管很多exception, 如果要在wsad2.1.5上跑的话,可能要加一部分包,至少client调用时要加.

读书人网 >Web前端

热点推荐