由於您使用的Axis2,它生成客戶端代理(WSDL2Java的是你最好的朋友),併爲您的Web服務標準的Java代理。無需手動創建SOAP信封...(至少在99%的情況下)。
只需生成一個WSDL(使用java2wsdl編寫或生成它),然後使用它來生成調用Web服務的java代理。
關於如何使用代理...從JSP
恕我直言,直接調用是一個沒有沒有。最好讓JSP收集數據並將它們發佈到servlet,然後在servlet中執行WebService調用,管理響應(如果您使用Axis2框架,它將是一個純java對象),處理錯誤並轉發給另一個JSP,以提供結果。
JSP有些容易寫,但是從長遠來看,更好地利用他們,他們的計劃是什麼,並保持servlet的
這裏做WSDL和客戶端生成2個Ant任務中的業務邏輯。
<!-- create the wsdl file -->
<target name="genwsdl">
<echo message="Generate the WSDL file"/>
<taskdef name="java2wsdl" classname="org.apache.ws.java2wsdl.Java2WSDLTask" classpathref="axis2.classpath"/>
<java2wsdl className="org.stackoverflow.YourWebServiceClassName"
servicename="YourServiceName"
description="Whatever..."
outputLocation="./wsdl"
locationuri="http://localhost:8081/NameMe/CoolService">
<classpath>
<pathelement path="${axis2.classpath}"/>
<pathelement location="./build/classes"/>
</classpath>
</java2wsdl>
<echo message="Generation of the WSDL file complete"/>
</target>
<target name="genclient" depends="genwsdl">
<taskdef name="axis2-wsdl2java" classname="org.apache.axis2.tool.ant.AntCodegenTask" classpathref="axis2.classpath"/>
<axis2-wsdl2java wsdlfilename="./wsdl/YourWsdl.wsdl" output="./client overwrite="true"/>
</target>
一旦你生成你的客戶端類(代理),你可以用它們來調用Web服務。
這將是這樣的:
YourServiceStub stub = new YourServiceStub(wsEndPointUrl);
然後在存根你必須爲每個遠程發佈的方法和靜態類包裝的請求/響應對象的方法。但是在這一點上,Axis2客戶端文檔的一些內容是強制性的。
是的,所以基本上jsp會將文件上傳到位於PC2的servlet。你能給我一些語法來構造來自servlet的SOAP消息並調用servlet中的Web服務嗎?謝謝 –
這有點難,我可以添加一個螞蟻任務的例子。 – BigMike
非常感謝 –