由于您使用的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
非常感谢 –