我们有一些现有的 Java 代码在 Tomcat 服务器上运行,我们希望允许另一台机器上的代码执行,因此我们正在研究 Web 服务。我是网络服务的新手,我想我可能在这里做错了什么。
我遵循了一些关于如何在 Tomcat 中部署 JAX-WS Web 服务的在线教程。我创建了一个 Web 服务类并使用 @WebService 对其进行注释,编写了一个 web.xml 和 sun-jaxws.xml 文件,将这些文件(加上 JAX-WS jar 文件)打包到一个 .war 文件中,并将其部署到 Tomcat . 这似乎有效,因为我可以在指向 Tomcat 的浏览器中加载 WSDL 文件。
这是我遇到问题的网络服务客户端。首先,服务器端有现有的类可以映射到数据库中。我们希望允许客户端使用相同的现有类并从中创建实例,调用 Web 服务,然后将对象存储到数据库中。但是,当我对服务器的 WSDL 文件运行 wsimport 命令时,它生成了一堆 Java 类,其中很多与我们现有的类相似。我想我们必须使用那些而不是我们现有的类?代码重用就这么多,除非我很困惑,这是很有可能的。
所以现在我已经使用 wsimport 生成的那些类编写了客户端。但是我遇到了编译错误。我们现有 Java 类中的一些字段是 java.net.InetAddress 类型的。但由于某种原因,wsimport 生成了自己的 InetAddress 类,它看起来是这样的:
package ems.server.webservices;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "inetAddress")
public class InetAddress {
}
是的,这只是一堂课,里面什么都没有!所以我说的很多编译错误:
WSClient.java:37: setAddress(ems.server.webservices.InetAddress) in ems.server.webservices.NetworkAddress cannot be applied to (java.net.InetAddress)
networkAddress.setAddress(InetAddress.getByName("1.1.1.1"));
我正在尝试创建一个 java.net.InetAddress,但它希望我使用由 wsimport 生成的空类。我一定在这里做错了什么。请赐教。