Pergunta

public class Pojo {
   private String value;

   public static void printValue() {
      System.out.println("value=" + value);
   }
}

Eu gostaria de devolver este de um serviço web da seguinte forma:

@WebService
public class MyService {
   @WebMethod
   public Pojo getPojo() {
      return new Pojo();
   }
}

Parece que não consegue encontrar a resposta definitiva sobre se eu puder, deve, não pode, ou não deveria.

Foi útil?

Solução

Apenas os dados são enviados através do fio. Os métodos estáticos ou não-estáticos não são enviados.

Se do lado do destinatário que você ligar os dados à mesma classe - bem, você tem os seus métodos de volta, mas o SOAP não tem nada a ver com isso, é a sua própria astúcia. Clientes escritos em outras linguagens (C #, Python, ...) não terá o seu método, é claro.

P.S. A classe de qualquer objeto que você está enviando de volta sempre tem métodos. Seu Pojo é implicitamente uma subclasse de Object, e assim ter toString (), hashCode (), e assim por diante. O JAX-WS não me importo.

Outras dicas

No. Pense nisso:

  1. Os serviços Web são destinadas a ser independente de plataforma
  2. O que é enviado através do fio é simplesmente XML (ou algum outro formato) de dados

Então, como você seria capaz de enviar através do fio um método estático? Como é que os clientes não-Java ser capaz de interpretar a resposta do seu serviço web?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top