(1)下载Axis2,并解压。
官方网址:http://ws.apache.org/axis2/
(2)设置环境变量
SET AXIS2_HOME=解压后bin目录所在的目录,尽量不要有空格或中文
SET PATH=%AXIS2_HOME%\bin;
(3) 修改bin目录中的wsdl2java.bat
为了方便使用,以及避免一些NoClassFoundException类似的问题,修改wsdl2java.bat文件,查找:
set _RUNJAVA="%JAVA_HOME%\bin\java"
在这一行下面增加如下一行
set JAVA_OPTS="-Djava.ext.dirs=%AXIS2_HOME%\lib"
WSDL2Java -uri \WSDL_North_070929\ctcc_mm_send_service_2_2.wsdl -o src
WSDL2Java -uri \WSDL_North_070929\ctcc_mm_send_service_2_2.wsdl -p src -d xmlbeans -s -o build/client
客户端
1. 生成存根代码
WSDL2Java -uri http://localhost:8089/SayHello/services/BookService?wsdl -p src -d xmlbeans -s -o build/client
或
WSDL2Java -uri http://localhost:8089/SayHello/services/BookService?wsdl -o src
try {
BookServiceStub stock=new BookServiceStub();
FindBook findBook3=new FindBook();
findBook3.setIsbn("0123456789");
FindBookResponse Response=stock.findBook(findBook3);
System.out.println(Response.get_return().getAuthor());
} catch (java.rmi.RemoteException remoteException) {
remoteException.printStackTrace();
}
服务端
动态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>
service.xml 代码
<serviceGroup>
<service name="BookService"
targetNamespace="http://ws.apache.org/axis2/samples/book/">
<description>
Book sample service
</description>
<schema schemaNamespace="http://ws.apache.org/axis2/samples/book/xsd/"/>
<parameter name="ServiceClass" locked="false">samples.demo.BookService</parameter>
<operation name="getBooks">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<operation name="findBook">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
</service>
</serviceGroup>
wsdl 地址
http://127.0.0.1:8089/SayHello/services/BookService?wsdl
在调试中遇见的问题:
1:<error>
在service.xml中改为<parameter name="useOriginalwsdl">false</parameter>