【问题标题】:How to received SOAP XML on Java Web-Service如何在 Java Web 服务上接收 SOAP XML
【发布时间】:2017-10-23 12:25:35
【问题描述】:
我有客户端发送的 WSDL XML 文件。它用于通知服务。意味着我们的客户端通过 URL http://xxx.xxx.com/notification 向我们的服务器发送 SOAP 通知。
我是 SOAP Web 服务的新手,我无法识别,如何在 JAVA Web 服务上获取 SOAP XML。
如果您需要更多说明,请告诉我。
【问题讨论】:
标签:
java
web-services
soap
wsdl
soap-client
【解决方案1】:
我不清楚您的要求是什么。是生成一个wsdl以便客户端可以使用它来调用您的服务还是您需要使用给您的wsdl来使用第三方服务。
假设您有一个 wsdl,并且您想使用 wsdl 调用服务,以下是我的建议。
您可以使用 eclipse 方式生成类,这样做的唯一缺点是每次 wsdl 文件发生更改时您都必须这样做。
如果您使用的是 maven、gradle 或 ant 等构建工具,那么您可以在每次构建项目时自动执行“生成”过程。
例如,如果您使用 Maven,您可以添加 jaxws-maven-plugin 来实现,如下所示。将以下内容添加到 maven pom.xml 文件中
以下xml取自https://github.com/mojohaus/jaxws-maven-plugin/blob/master/src/it/jaxws-ri-samples/fromwsdl/client/pom.xml
<build>
<sourceDirectory>../src</sourceDirectory>
<finalName>jaxws-fromwsdl-client</finalName>
<plugins>
<!-- generate web services classes from wsdl file -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.11</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<verbose>true</verbose>
<wsdlUrls>
<wsdlUrl>http://localhost:8080/jaxws-fromwsdl/addnumbers?wsdl</wsdlUrl>
</wsdlUrls>
<packageName>fromwsdl.client</packageName>
</configuration>
</execution>
</executions>
</plugin>
<!-- configure compiler plugin to pickup only server side java files -->
<!-- note that at compile phase, wsdl's classes are already generated -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<includes>
<include>*/client/*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
【解决方案2】:
如果您现在希望收到什么,您可以编写接收器类并且如果您使用 Eclipse:
在 Eclipse 主菜单中,单击文件 > 新建 > 其他。
在向导对话框中,展开 Web 服务节点,选择 Web 服务并单击下一步。
在 Web 服务向导屏幕上,选择自底向上 Java bean Web 服务作为 Web 服务类型,然后使用浏览按钮选择服务实现类。
下一个屏幕列出了将要创建的 WSDL 文件的名称以及服务实现类中可用的公共方法,这些方法可以通过 SOAP Web 服务公开。
点击下一步继续。 Eclipse IDE 现在将生成 Web 服务文件。
然后您可以从 WSDL 中创建客户端代码,这是非常通用的,但可以作为一个起点。
【解决方案3】:
从您的问题看来,您似乎有一个 WSDL 文件,并且您想访问它所公开的 web 服务。一个快速的方法是:
1) 转到命令提示符并在 .wsdl 文件上执行 wsimport 作为 -keep(保存从命令生成的 .java 文件)。
2) 在您的工作空间中移动生成的 java 文件。
3) 在 .wsdl 文件中查找服务名称和端口名称,并随后将它们作为对象。
4)然后根据需要在.wsdl中进行操作。