JAX-WS xsd:import

4 respostas
P

Fala galera,

Estou criando um serviço com JAX-WS no Weblogic11. Ele funciona perfeitamente, entretanto gostaria de colocar todos os xsds das entradas/saídas junto ao wsdl. Hoje isso não acontece, ele usa o xsd:import para isso, separando o xsd em um arquivo diferente. Alguém sabe se é possível fazer essa junção usando anotação?

Esse é o trecho do xsd:import:

<xsd:schema>  
   <xsd:import namespace="http://testService.services.test.com.br/" schemaLocation="http://127.0.0.1:7001/TestServiceWS/TestServiceWSService?xsd=1"/>  
   </xsd:schema>
Este é o webservice:
@Stateless(mappedName = "services/testservice")  
   @WebService  
   @Remote(value = ITestService.class)  
   @HandlerChain(file = "handler-chain.xml")  
   @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.BARE)  
   public class GetGroupTaskWS implements ITestService {  
     
       public TestServiceOut testService(TestServiceIn in) throws Exception {  
   ...

valeu

4 Respostas

jeangos

pozzo, “o pulo do gato” é que os esquemas fiquem separados mesmo, não sei o motivo que te levou a querer tudo juntinho.

No meu caso tive um problema usando um cliente Delphi, onde o mesmo mão entrava em todos os níveis de schemas importados.
Consegui colocar tudo no wsdl manualmente, lógico que ctrl + c … ctrl + v de um pro outro não vai funcionar. Ha! ha! ha!

Mas abaixo tem um link com dica de como fazer tudo funcionar direitinho:
http://www.ehow.com/how_7691573_import-xsd-wsdl.html

Voltando, vc pode usar esse novo wsdl e recriar o serviço baseado nele (velho método bottom-up) onde tua classe de serviço java vai ser recriada.

Detalhe, a manutenção vai ficar no wsdl, no caso de novos tipos de dados. (bomba)

Sinceramente, esse trabalho todo para um projeto pequeno até que dá, mas como a tendência é sempre crescer… (sem comentários).

Acho que não ajudei muito, mas se você conseguir fazer isso via anotação é sempre uma informação bem vinda para comunidade!

P

Fala jeangos,

Obrigado pela resposta. Na verdade concordo contigo, mas é que aqui usamos um ESB Weblogic antigo, e para pendurar os serviços eu preciso subir o WSDL nele. Agora que estamos usando JAX-WS, a equipe de produção reclama que precisam subir o WSDL e vários xsds… Entendeu a pressão? rs rs
Nós estamos tentando mudar o menos possível do processo, mas é claro, isso é uma melhoria no processo.

Se encontrar algo, posto aqui.

valeu

Kenobi

Olá Pozzo, você pode definir os Types diramente dentro do contrato nessa respecitva área, porém não é recomendado. Sim, terá que repetir exatamente todos os ComplexTypes que estão no contrato, por tal motivo, isso não é uma boa prática, pois se mudar algo em qualquer um dos Schemas, terá que mudar em todos WSDL´s.

Quanto o seu problema com o ESB, leve todos os XSDs primeiramente para o ALSB, veja se há referências cíclicas, isso é um impeditivo forte. Depois suba os contratos. Caso o mesmo ainda se perca, edite o contrato e vá na aba de referências e localize o XSD.

PS: Não tem desculpa pra não fazer coisa certa 8)

P

Fala Kenobi,
Obrigado pela resposta. Mas eu nem penso em criar os wsdls manualmente. Vamos usar o que o JAX-WS gera mesmo. Na verdade, esse é um motivos da mudança.

Sobre o Aqualogic, ele é responsabilidade de outra equipe. Como é uma grande empresa, é interessante mudar as coisas devagar, para não causar muito impacto. Mas concordo, seria bom se tudo fosse feito da forma certa… he he

vlw

Criado 15 de fevereiro de 2011
Ultima resposta 17 de fev. de 2011
Respostas 4
Participantes 3