轉(zhuǎn)到在目錄..\WebRoot\WEB-INF\classes下:
2、生成client stub文件, 生成SendSms.wsdl文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.Java2WSDL -oSendSms.wsdl -lhttp://localhost:8080/websms/services/SendSms -n"urn:SendSms" -p"sample.webservice" "urn:SendSms" sample.webservice.ISendSms
生成的SendSms.wsdl文件中,參數(shù)名稱默認(rèn)為in1,in2等,需要改成相應(yīng)的名稱。
3、生成client stub
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true -Nurn:SendSms sample.webservice SendSms.wsdl
生成的文件列表如下:
deploy.wsdd
undeploy.wsdd
ISendSms.java
ISendSmsService.java
ISendSmsServiceLocator.java
SendSmsSoapBindingImpl.java
SendSmsSoapBindingSkeleton.java
SendSmsSoapBindingStub.java
4、布署服務(wù),在WEB-INF目錄下生成server-config.wsdd文件, 隨Tomcat啟動(dòng)自動(dòng)加載里面定義的服務(wù)
轉(zhuǎn)到目錄..\WebRoot\WEB-INF\classes\sample\webservice下
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/websms/services/AdminService deploy.wsdd
在Axis里書寫deploy.wsdd并利用org.apache.axis.client.AdminClient發(fā)布,其主要工作就是把<service>標(biāo)簽中的內(nèi)容添加在server-config.wsdd里,所以一般直接編輯server-config.wsdd文件會(huì)更方便一些。不過當(dāng)你還沒有server-config.wsdd文件時(shí),使用deploy.wsdd的方法會(huì)更方便些,因?yàn)锳dminClient會(huì)幫你生成一些額外的xml元素(<handler>等等),而這些元素是必要的。
5、項(xiàng)目中加入Axis所需的包, web.xml加入相關(guān)定義
<display-name>Apache-Axis</display-name>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet>
<display-name>Axis Admin Servlet</display-name>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AdminServlet
</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
通過http://localhost:8080/websms/services/SendSms?wsdl來查看WSDL描述了
6、測試代碼
public static void main(String[] args) {
try{
/*ISendSmsService service = new ISendSmsServiceLocator();
ISendSms sender = service.getSendSms();
String result = sender.send("cid","cname");
System.out.println("call result:"+result);*/
String tvServiceURL = "http://localhost:8080/websms/services/SendSms"; //web service 地址
java.net.URL endpointURL = new java.net.URL(tvServiceURL);
String result = "ok";
result = new SendSmsSoapBindingStub(endpointURL,null).send("id","cname");
System.out.println("call result:"+result);
}
catch(Exception ex){
ex.printStackTrace();
}
}
我們還可以通過IE瀏覽器直接調(diào)用服務(wù),方法是在服務(wù)URL后加“method=xxx”,其中xxx是要調(diào)用的方法名稱。例如可以通過http://localhost:8080/websms/services/SendSms?method=send&userId=uid&...調(diào)用方法。
====================================================================================
另外, 也可能過新建一個(gè)deploy.wsdd文件,通過這個(gè)文件直接布署我們的服務(wù)
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/websms/services/SendSms deploy.wsdd
// 它會(huì)在WEB-INF目錄生成server-config.wsdd文件, 若此文件已存在, 它會(huì)在文件加入當(dāng)前服務(wù)的注冊。
生成wsdl文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.Java2WSDL -oSendSms.wsdl -lhttp://localhost:8080/websms/services/SendSms -nsendsms sample.webservice.SendSms
生成客戶端文件
java -Djava.ext.dirs=../lib org.apache.axis.wsdl.WSDL2Java SendSms.wsdl -p client