如何在工程中运行axis2的命令和参数,请参看《通过eclipse将Java生成webservice》
工程配置如后所提:web.xm和lib
接口类:
package com.inspur.webservice;
public interface WidgetPrice {
public void setWidgetPrice(String widgetName, String price);
public String getWidgetPrice(String widgetName);
}
org.apache.ws.java2wsdl.Java2WSDL
参数:
-o WidgetPrice.wsdl
-cn com.inspur.webservice.WidgetPrice
或者
-cn com.inspur.webservice.WidgetPrice
-of tt.wsdl
在应用的根目录下WidgetPrice.wsdl文件夹中有一WidgetPrice.wsdl。也可以在根目录下生成tt.wsdl
放到你想要的位置
org.apache.ws.java2wsdl下有3个Java2WSDL相关的类,你可以尝试使用。
提示:
[JAM] Warning: You are running under a pre-1.5 JDK. JSR175-style source annotations will not be available
通过wsdl2Java生成服务端代码:
org.apache.axis2.wsdl.WSDL2Java
参数1
-uri D:/workspace/AxisTest/WidgetPrice.wsdl
-o
参数2:
-uri D:/workspace/AxisTest/WidgetPrice.wsdl -o test -ss -sd -g -p com.inspur.webservice.server
生成服务端和services.xml
参数3
-uri D:/workspace/AxisTest/WidgetPrice.wsdl 只生成客户端调用辅助类
好了差不多:
1.将程序和wsdl和services.xml外加class文件,打包成.aar包。通过axis2的管理台上传即可。
记得最好打包不要再生成wsdl或services.xml,那样虽然服务可以用,但http://localhost:8080/axis2/services/WidgetPrice?wsdl是看不到wsdl内容的。
2.如果要部署在工程上的话最好如下:
Web.xml
<display-name>Apache-Axis2</display-name>
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<!--<init-param>-->
<!--<param-name>axis2.xml.path</param-name>-->
<!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
<!--<param-name>axis2.xml.url</param-name>-->
<!--<param-value>http://localhot/myrepo/axis2.xml</param-value>-->
<!--<param-name>axis2.repository.path</param-name>-->
<!--<param-value>/WEB-INF</param-value>-->
<!--<param-name>axis2.repository.url</param-name>-->
<!--<param-value>http://localhot/myrepo</param-value>-->
<!--</init-param>-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
将axis2的相关jar包放到lib中,在你自己的工程下建这样的目录:
Web-inf
----services
-------- WidgetPrice(服务名的文件夹)
-----meta-inf
----- services.xml
------ WidgetPrice.wsdl(可选)
在将项目重部署,访问http://localhost:8080/AxisTest/services/WidgetPrice?wsdl可以看到项目上部署成功的webService。
本篇和《通过eclipse将Java生成webservice》都只是说了webservic的生成和部署,客户端的测试请自行解决,最好的方式还是通过服务的wsdl来生成客户端在测试。
参考:(这个方式应该可以用,我没有测试过)
1. 生成wsdl
org.apache.ws.java2wsdl.java2wsdl -cn classa -o .
参数说明:
-cn 原形类
-o 输出路径
运行完成后就可以看到目录下多了一个wsdl文件.不要动它继续生成server端和client端
2.生成server端
org.apache.axis2.wsdl.wsdl2java -uri d:/test/6/classa.wsdl -ss -sd -p com.hjw.test.server -d xmlbeans -o server
参数说明: -uri wsdl文件
-ss -sd 搞不太清楚,好像是用来生成server端部署描述的。
-p 生成包。就是说生成到什么包名下。
-d xmlbeans 搞不太清楚,每次都是这样用的。
-o server 输出目录。叫什么都没关系,只要你喜欢。
3. 第三步生成client测试代码
org.apache.axis2.wsdl.wsdl2java -uri d:/test/6/classa.wsdl -p com.hjw.test.server -d xmlbeans -o client
这个指令跟server端的基本上一样,就是少了个-ss和-sd 好像就是说不生成部署描述。
到此为止我们的web services框架已经完整的生成了。再下来就是去实现业务了。
我们到server目录下找到类似于classaskeleton.java的文件。我们的实现就只要改这个类了。
打开这个类我们发现这个类里有个方法这个方法名为我们那个原型类里的方法名。但是这个方法没有实现默认只是抛出一个没有完成的异常。接下来当然是去掉这个异常然后加入自己的方法了。
4. 使用 WSDL2JAVA 產生 stub classes:
wsdl2java
-uri http://localhost:8083/axis2/services/HelloWorldService?wsdl
-o D:/eclipse_wtp/workspace/HelloWorldClient -p test.joeyta
-uri WSDL 的 uri 位置.
-o 輸出 stub classes 的位置. 預設會增加 src 目錄.
-p 設定輸出 stub classes 使用的 package.