服务端使用axis去实现发布web service的服务:
刚刚接触axis,去搜索使用方式的时候,有三四种,但是没有哪一种是很清晰的讲明白的(也许是我资质不够,难以理解),在自己摸索之后,找到一种个人认为比较简单的使用方式,仅供参考......
具体步骤: 1.创建一个web project,以及创建自己要发布的服务类以及方法,在这个实例中项目是webService_reg2,服务类是RegisterDAO
2. 导入要使用的axis的jar包(这里不一一写出来了,自己到官网下载去),之后配置web.xml,主要是加载axis的核心servlet(有心的就可以发现DWR在配置的时候也需要配置核心servlet,这两者之间的原理其实差不多,自己思考去),具体的xml的代码形式是
3.配置server-config.wsdd,位置是在跟web.xml同级,这个文件主要是写清楚,我要发布哪一个服务类,比如这里我的就是这个
<service name="RegisterDAO" provider="java:RPC">
<parameter name="className" value="reg.dao.RegisterDAO"/> <parameter name="allowedMethods" value="*"/> </service>
可以看到就是要写明我的服务类是哪一个(路径),哪些方法是可以被别人调用。
4.之后直接访问web.xml配置的核心servlet:http://localhost:8080/webService_reg2/servlet/AxisServlet
说明已经发布了这个服务类,点击图中的“(wsdl)”,里面就是发布的服务类的具体详细信息(xml形式的)
5. 编写build.xml ---------(使用过程中,感觉build.xml就是专门用于为客户端(也就是要调用我的服务类的一方)做准备的)
build.xml就是要声明我要发布哪一些服务类,以及可以我发布的类的地址是什么,还有在客户端生成服务端的类的时候的包名是什么,不多说了,看例子:
<target name="j2w-all"> <antcall target="j2w-TestReg"/> </target> <target name="j2w-TestReg"> <axis-java2wsdl classname="reg.dao.RegisterDAO" classpath="${build.dir}" methods="go" output="..\WebRoot\wsdl\RegisterDAO.wsdl" location="http://localhost:8080/webService_reg2/services/RegisterDAO" namespace="RegisterDAO.client.ws.biceng.com" namespaceImpl="RegisterDAO.client.ws.biceng.com"> </axis-java2wsdl> </target>
里面的location就是服务类的地址,namespace就是客户端使用自动生成的方式来调用方法的时候是放在客户端工程的
哪些包,注意生成的包是倒过来的,这里的namespace是“RegisterDAO.client.ws.biceng.com",生成类的时候是”com.biceng.ws.client.RegisterDAO“
buid.xml还有一个作用就是可以生成服务类的wsdl文件,wsdl文件的内容其实就是和刚刚第四步的点击”(wsdl)“
看到的内容差不多,就是发布的服务类的详细信息,作用就是给客户端可以通过直接访问这个wsdl文件来生成相关的类,生成的具体地址就是自己在build.xml的 output="..\WebRoot\wsdl\RegisterDAO.wsdl"这里来确定 。(+_+所以会发现客户端有几种调用服务端的服务类方式)
总结:至此,服务端发布服务类的工作基本完成......这种方式比较简单,不必做过多的配置.........
最后附上该工程的源代码一份,仅供参考.....