我有一个简单的网络服务。公开的方法之一返回“Data”类型的 java 对象。该数据类有一个名为“getName()”的方法。我编译项目,在其上运行“wsgen”,然后启动服务(使用JDK6的嵌入式HTTP服务器,而不是tomcat或glassfish等)
到目前为止一切顺利,我可以在浏览器中的适当网址上看到 wsdl。
但是,当我尝试将该 wsdl 导入到另一个项目中时,导入过程成功创建了“Data”类(这是在服务器项目中找到的类),但没有为该类创建方法,因此我无法执行“data.getName()”之类的操作。
我的问题是“getName()”方法存在于服务器项目的 Data 类中,但在客户端项目中,尽管创建了 Data 类,但 wsdl 导入过程并未创建“getName()”方法。
我做错了什么?
最佳答案
WSDL 不包含有关方法中逻辑的任何信息,因此您不能 为内部对象生成代码。
简单的解决方案是将生成的客户端类替换为您在服务器端使用的相同类,但这可能被认为是不好的风格。
传递给 WS 的对象应该是简单的数据持有者,没有特殊的逻辑 您不仅限于原始类型,JAXB甚至可以处理非常复杂的对象,但是您不能将自定义逻辑从服务器复制到客户端,这样的行为无法标准化,并且会导致代码重复。
关于java网络服务;未生成方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/843712/