java网络服务;未生成方法

标签 java web-services

我有一个简单的网络服务。公开的方法之一返回“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/

相关文章:

web-services - URL 末尾不带 WSDL 的 SOAP Web 服务

android - 如何指定从 Android 模拟器调用 Web 服务的 URL?

java - String literal is not properly closed 错误的反斜杠

java - PDFLib 意见/经验

java - 没有打印语句,循环看不到其他线程更改的值

java - 为什么 httpbuilder 没有给出准确的 JSON 输出?

java - RESTful Web 服务使用 JSON 上传/下载大数据

web-services - 404 在现有的 .svc 文件上

java - 为什么 java 在使用 -jar 开关执行 jar 文件时不遵循类路径?

android - 从服务器加载数据的最佳实践(Android App)