我正在使用 JBoss 5.1.0GA 为其开发 WebService 和 Client。JBossWs 堆栈已经预装了我下载的二进制文件,据我所知,它是 JBossWs 3.1.2GA
我已经使用此设置开发了一个 Web 服务,并且还成功创建了一个客户端。这就是我所拥有的。
部署为 war 文件的 pojo Web 服务。
@WebService
public class Service{
@WebMethod
public CompleObj getConfiguration() {
CompleObj oConf = new CompleObj ();
for (int i = 0; i < 10; i++) {
NestObj oInst = new BOpRepoInstance("Val1", "Val2", "Val3", "Val4");
oConf.addRepoInstance(oInst);
}
return oConf;
}
}
这里,
CompleObj => 是一个具有 NestObj 类型列表的复杂对象。它的 getter/setter、toString 和其他一些方法。
NextObj => 有 4 个 String 类型的变量。它的getter/setter、toString、hashCode、equals等方法。
已成功部署此 Web 服务。
后来使用 eclipse 向导创建了一个客户端,用于使用 WSDL 文档生成 Web Service Client。它还创建了一个示例客户端文件,该文件将调用 Web 服务并获取返回值。这也很有效。
现在我的问题是,当 Eclipse 为客户端生成存根时,它为 CompleObj 和 NestObj 创建了类。这些类只有变量及其 getter/setter(这是有道理的,因为它们是从 WSDL 文档生成的)。因此,我放弃了许多其他方法,包括 toString、hasCode、equals 等,我也想在客户端使用这些方法。
现在如何直接使用WebService项目中定义的实际类文件,避免客户端使用生成的类文件。我可以为客户端项目提供类文件作为 .jar 二进制文件,我真的不知道如何实现这一点。
另一个问题是,Web 服务位置直接嵌入到存根中,我该怎么做才能将 Web 服务位置作为参数的一部分传递给调用代码?