需要工具:eclipse3.5, axis2-1.5,http-core4.0
Step1:引入axis2 runtime
在windows—>preferennce—>Axis2 preferennce的axis2 runtime引入axis2的路徑如圖:
點擊ok完成。
Step2:建立webservice服務端
1建立dynamic web project
新建web工程,並且編寫好自己的服務接口以及接口的實現,例如這裏編寫了一個接口HelloWorldService,該接口有方法String sayHello(String name);
2生成webservice
右鍵接口實現接口,選擇new—>other—>webservice
點擊下一步:
出現如圖所示的畫面
將上面的遊標拉到最頂上,選擇Test service,選擇server,選擇爲axis2勾選publish the webservice 如下圖
點擊next
默認勾選Generate a default service.xml 點擊next
選擇start server,server啓動之後點擊finish。Eclipse會啓動下圖頁面
這個時候服務並不能啓動成功,會報如下的錯誤
嚴重: Allocate exception for servlet AxisServlet java.lang.ClassNotFoundException: org.apache.http.HttpResponseFactory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at org.apache.axis2.transport.http.SimpleHTTPServer.init(SimpleHTTPServer.java:116) at org.apache.axis2.engine.ListenerManager.init(ListenerManager.java:74) at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:449)
|
這是因爲還有兩個地方需要修改
1:添加http-core4.0 jar包到lib下面
2:修改web.xml文件
<servlet> <display-name>Apache-Axis Admin Servlet Web Admin</display-name> <servlet-name>AxisAdminServlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class> <load-on-startup>100</load-on-startup> </servlet> |
將上面的servlet的class修改成如下
<servlet> <display-name>Apache-Axis Admin Servlet Web Admin</display-name> <servlet-name>AxisAdminServlet</servlet-name> <servlet-class>org.apache.axis2.webapp.AxisAdminServlet</servlet-class> <load-on-startup>100</load-on-startup> </servlet> |
啓動tomcat,service部署成功
Step 3:生成webservice-client端
1 新建web工程
新建web工程,這裏命名爲WsClient
2生成webservice-client
右鍵工程 new--àother---àwebservice client
在service definitaion 中輸入剛纔部署的webservice的wsdl地址,標尺拉到最上面test client
選擇web service runtime 爲axis2
如下圖
點擊next
選擇生成junit testcase點擊finish eclipse生成如下所示頁面
同樣的,webservice也需要添加http-core4.0jar包以及更改AxisAdminServlet servlet的class路徑
至此 ws-cilent生成成功,cilent端有相應的測試用例,可以用來測試
PS:
如果ws-server端需要整合spring,那麼需要修改現有的service.xml文件
例如自動生成的service.xml如下
<service name="AuthenticateServiceImpl" > <Description> Please Type your service description here </Description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass" locked="false">net.carefx.sso.service.impl.AuthenticateServiceImpl</parameter> </service> |
要整合spring就要修改成如下
<serviceGroup> <service name="AuthenticateServiceImpl" > <Description> Please Type your service description here </Description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass" locked="false">net.carefx.sso.service.impl.AuthenticateServiceImpl</parameter> <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter> <parameter name="SpringBeanName">authenticateService</parameter> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </messageReceivers> </service> </serviceGroup> |
主要是加入了下面兩個配置參數
<parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
<parameter name="SpringBeanName">authenticateService</parameter>
再次PS
感謝小虎老師的指導,thanks tiger!