Posted on 2006-09-18 15:05
小小涼粉 閱讀(454)
評論(0) 編輯 收藏 所屬分類:
JavaEE
昨天寫完程序并部署Service之后,一直都在拋出接口不匹配的異常,于是我就寫了個簡單的接口,只傳入一個String類型的參數,結果運行正常。然后我又寫了個只傳入Integer類型參數的接口,果不出所料,又發生了接口不匹配的異常。接下來我就開始改Client端代碼:
params.addElement(new Parameter("eventStatus",Integer.class, new Integer(1), null));
params.addElement(new Parameter("eventStatus",int.class, new Integer(1), null));
params.addElement(new Parameter("eventStatus",int.class, 1, null));
params.addElement(new Parameter("eventStatus",Intege.class, 1, null));
結果統統失敗,弄的我都要抓狂了。
今天到了公司以后,跟組長說了這件事情,組長說讓我換用AXIS試試看,我到ws.apache.org/axis上面看了看文檔,在user guide里面給出的例子和我的代碼差別很大,我就只好按著它的例子重新改代碼
寫完以后,配環境變量配的快要抓狂……部署的時候又是一頭霧水……最后始終沒有成功……最后回到宿舍才想到,AXIS和Apache SOAP Server不過都是服務器而已,不應該存在規范上的區別,也就是不應該會影響到客戶端的程序,于是我就按照最開始的代碼,把Service部署好,啟動 Tomcat,從WSDL中找到對應的信息
<wsdl:service name="ServiceService">
?<wsdl:port binding="impl:serviceSoapBinding" name="service">
? <wsdlsoap:address location="http://localhost:8080/axis/services/service" />
?</wsdl:port>
</wsdl:service>
在xml配置文件中,把location賦值給URL,把name賦值給TargetObjectURI,運行Client,一切OK
不知道是不是因為機器的問題,在公司的思路遠遠不如在宿舍啊
不過今天至少讓我很熟練的掌握了如何手工部署AXIS服務,創建一個wsdd文件,我把它命名為deploy.wsdd
<deployment name="lijian" xmlns="
??? xmlns:java="
? <service name="service" provider="java:RPC">
??? <parameter name="className" value="Service" />
??? <parameter name="allowedMethods" value="setAlarmInfo" />
? </service>
</deployment>
把這個文件放到Tomcat/webapps/axis/WEB-INF/目錄下,把service的類放到WEB-INF/classes/目錄下,把 axis.jar;jaxrpc.jar;commons-logging-1.0.4.jar;commons-discovery-0.2.jar;saaj.jar 放到classpath里面,啟動Tomcat之后,到webapps/axis/WEB-INF目錄下運行:
java org.apache.axis.client.AdminClient deploy.wsdd
之后可以訪問
http://localhost:8080/axis/來查看剛才部署的service對應的wsdl了