Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jax-ws-web方法能否返回具有静态方法的对象?_Java_Service_Jax Ws_Static Methods - Fatal编程技术网

Java jax-ws-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

我希望从web服务返回此信息,如下所示:

public class Pojo {
   private String value;

   public static void printValue() {
      System.out.println("value=" + value);
   }
}
似乎无法找到关于我是否可以、应该、不能或不应该的最终答案。

不。想想看:

  • Web服务意味着独立于平台
  • 通过网络发送的只是XML(或其他格式)数据
  • 那么,您如何能够跨线发送静态方法呢?非Java客户端如何解释您的web服务的响应?

    否。想想看:

  • Web服务意味着独立于平台
  • 通过网络发送的只是XML(或其他格式)数据

  • 那么,您如何能够跨线发送静态方法呢?非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();
       }
    }