Java jax-ws-web方法能否返回具有静态方法的对象?
我希望从web服务返回此信息,如下所示:Java jax-ws-web方法能否返回具有静态方法的对象?,java,service,jax-ws,static-methods,Java,Service,Jax Ws,Static Methods,我希望从web服务返回此信息,如下所示: public class Pojo { private String value; public static void printValue() { System.out.println("value=" + value); } } 似乎无法找到关于我是否可以、应该、不能或不应该的最终答案。不。想想看: Web服务意味着独立于平台 通过网络发送的只是XML(或其他格式)数据 那么,您如何能够跨线发送静态方法呢?非Jav
public class Pojo {
private String value;
public static void printValue() {
System.out.println("value=" + value);
}
}
似乎无法找到关于我是否可以、应该、不能或不应该的最终答案。不。想想看:
那么,您如何能够跨线发送静态方法呢?非Java客户端如何解释web服务的响应?只有数据通过网络发送。不发送静态或非静态方法 如果在接收端将数据绑定到同一个类——很好,您将返回您的方法,但SOAP与此无关,这是您自己的诡计。当然,用其他语言(C#,python,…)编写的客户机不会有您的方法
另外,你要发回的任何对象的类都有方法。您的Pojo是从Object隐式子类化的,因此有toString()、hashCode()等等。JAX-WS不在乎。只有数据通过网络发送。不发送静态或非静态方法 如果在接收端将数据绑定到同一个类——很好,您将返回您的方法,但SOAP与此无关,这是您自己的诡计。当然,用其他语言(C#,python,…)编写的客户机不会有您的方法
另外,你要发回的任何对象的类都有方法。您的Pojo是从Object隐式子类化的,因此有toString()、hashCode()等等。JAX-WS不在乎。我就是这么想的。我真的不在乎静态方法是否通过网络发送。例如,它可能是我的应用程序中只需要的实用方法。我的问题是这是否会导致错误。我知道静态方法在WSDL中不可用。在这一点上,使用静态方法似乎不是一个好主意。一个实用类会是一个更好的地方。我只是不想创建一个实用类,因为该方法在逻辑上更适合该类本身。为此,您将如何发送一个常规方法?只有数据通过网络发送。我想我的意思是“客户可以访问”,而不是“通过网络发送”。基本上,当客户机接收到web服务调用的结果时,使用一些方便的方法处理它可能会很有用。这通常是如何做到的(最佳实践是什么)?您不能以可移植的方式定义方便的方法。因此,只有当两边都有Java时,代码的重用才有可能。然后,您可以(人们经常这样做)将实用程序类打包到一个单独的JAR中,并在客户机和服务器上部署。我真的不在乎静态方法是否通过网络发送。例如,它可能是我的应用程序中只需要的实用方法。我的问题是这是否会导致错误。我知道静态方法在WSDL中不可用。在这一点上,使用静态方法似乎不是一个好主意。一个实用类会是一个更好的地方。我只是不想创建一个实用类,因为该方法在逻辑上更适合该类本身。为此,您将如何发送一个常规方法?只有数据通过网络发送。我想我的意思是“客户可以访问”,而不是“通过网络发送”。基本上,当客户机接收到web服务调用的结果时,使用一些方便的方法处理它可能会很有用。这通常是如何做到的(最佳实践是什么)?您不能以可移植的方式定义方便的方法。因此,只有当两边都有Java时,代码的重用才有可能。然后,您可以(人们经常这样做)将实用程序类打包到一个单独的JAR中,并在客户机和服务器上部署。
@WebService
public class MyService {
@WebMethod
public Pojo getPojo() {
return new Pojo();
}
}