JAX-WS: por que elementos aninhados estão no espaço de nome ""?

Ter um serviço de brinquedos como abaixo

@WebService(targetNamespace="http://www.example.org/stock")
@SOAPBinding(style=Style.RPC,parameterStyle=ParameterStyle.WRAPPED)
public class GetStockPrice {
    @WebMethod(operationName="GetStockPrice",action="urn:GetStockPrice")
    @WebResult(partName="Price")
    public Double getPrice(
            @WebParam(name="StockName")
            String stock
        ) {
        return null;
    }
}

O cliente gerado por JAX-WS cria uma mensagem SOAP em que o parâmetro StockName não possui espaço para nome:

<?xml version='1.0' encoding='UTF-8'?&g,t;
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:GetStockPrice xmlns:ns2="http://www.example.org/stock">
      <StockName>IBM</StockName>
    </ns2:GetStockPrice>
  </S:Body>
</S:Envelope>

Eu esperaria e desejaria que o StockName fosse gerado como

  <ns2:StockName>IBM</ns2:StockName>

i.e. no espaço para nome de destino, não no anônimo (ns2 não é o padrão, tanto quanto posso ver na mensagem).

quot;Gostaria de saber como fazer o JAX-WS adicionar o espaço de nome de destino aos elementos aninhados da mensagem?&quo

Uma tentativa de especificar o espaço para nome da anotação WebParam não mudou nada, pois esse parâmetro é ignorado quando o RPC é usad

Or ... Isso significa que os parâmetros no estilo RPC são sempre anônimos?

ATUALIZA

Illy me. Parcialmente resolvido. O que eu tinha que fazer é

style = Document, para habilitar namespaces de destino para elementosparam style = Embrulhado, para ativar o elemento de nível superiorspecify o namespace de destino para o WebParam (por que o serviço 1 não é usado? a documentação diz que o namespace do serviço deve ser usado)

Isso é

@WebService(targetNamespace="http://www.example.org/stock")
@SOAPBinding(style=Style.DOCUMENT,parameterStyle=ParameterStyle.WRAPPED)
public class GetStockPrice {
    @WebMethod(operationName="GetStockPrice",action="urn:GetStockPrice")
    @WebResult(partName="Price")
    public Double getPrice(
            @WebParam(name="StockName",targetNamespace="http://www.example.org/stock")
            String stock
        ) {
        return null;
    }
}

Ainda, o cliente ainda espera um valor de retorno sem nenhum espaço para nome, mesmo que eu tente declarar fornecer um. Isso é confuso.

questionAnswers(2)

yourAnswerToTheQuestion