首先需要從官網下載兩個壓縮包,一個是axis2-1.6.2-war.zip,一個是axis2-1.6.2-bin.zip。 其中第一個zip中有tomcat服務器需要的支持類jar包,我們把其中的axis2.war放在tomcat目錄的webapps下,瀏覽器http://localhost:端口號/axis2/測試通過。下面我們開始進入代碼。
1, 新建JavaWeb工程,導入所需jar包;這些jar包位於 axis2-1.6.2-bin.zip\axis2-1.6.2\lib 下,把所有的jar包放入WEB-INF的lib下。
2, 新建接口服務類,例如 com/accp/test 包下 Service.java :
package com.accp.test;
/**
* 接口服務層
*/
public class Service {
public String sayHelloNew(String ni) {
return "船行蕩飛 蕩在金山嘍喂 遍地金黃再照吾慾望"+ni;
}
public String sayHelloToPersonNew(String name) {
if (name == null) {
name = "nobody";
}
//System.out.println("啊呀");
return "巫山口哎,晚風狂哎," + name;
}
public void updateData(String data) {
System.out.println(data + " 已更新。");
}
}
3, 編寫WebService接口的配置文件,放在META-INF下 ,名字爲 services.xml :
<?xml version="1.0" encoding="UTF-8"?>
<service name="HelloServiceNew">
<description>
Web Service
</description>
<parameter name="ServiceClass">
com.accp.test.Service
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
4, 在WEB-INF下新建文件夾services,開始打aar的包 :
在F:\ws 隨便新建一個文件夾名字爲ws,在ws裏新建文件夾F:\ws\com\accp\test 注意,此處對應着服務類的包名com.accp.test。把Service.java編譯成Service.class文件放於其中;然後新建 F:\ws\META-INF 文件夾 把3中的services.xml放於其中。完整目錄爲F:\ws\META-INF\services.xml與F:\ws\com\accp\test\Service.class;
開始打aar的包:運行cmd,進去F:\ws目錄,輸入 jar cvf ws.aar com META-INF 回車,ok。
5, 配置web.xml,加載服務 :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 此處指定加載aar -->
<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>
</web-app>
6, 編寫測試類 Test.java :
package com.accp.test;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
/*
* 獨立部署
*/
public class Test {
public static void main(String[] args) throws AxisFault {
RPCServiceClient serviceClient;
String result = null;
try {
serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8000/Test/services/HelloServiceNew?wsdl");
options.setTo(targetEPR);
Object[] opAddEntryArgs = new Object[] {"遍地金黃 遠望 照吾慾望"};
QName opAddEntry = new QName(
"http://test.accp.com",
"sayHelloNew");
Class[] classes = new Class[] { String.class };
Object[] orgs = serviceClient.invokeBlocking(opAddEntry,
opAddEntryArgs, classes);
result = orgs[0].toString();
} catch (AxisFault e1) {
e1.printStackTrace();
}
System.out.println(result);
}
}
注意 ,啓動tomcat時,請用debug模式,否則可能出現本地服務類修改後,測試類沒反應的現象。 其他詳細解釋網上很多,具體demo已上傳CSDN,第一次寫這東西,下面這個框子死活刪不掉了,諒解啊...
|
|||||||