WebService

17 respostas
M

Boa tarde
Estou com um problema que ate hoje não tinha acontecido, é o seguinte
Estou criando um novo wbeService, depois de tudo pronto eu rodo o projeto, e nao acontece nenhum erro mas quando eu adiciono um novo WebService, apenas um deles funciona o outro de erro o tempo todo!
Alguem sabe como posso resolver esse problema??
Obrigado!

17 Respostas

Rafael_Nunes

O que você está usando para criar WebServices?
O problema é na hora da criação? Publicação? Geraçãod e WSDL? Consumo?

E o mais importante, qual o erro?

M

O erro acontece quando testo o WebService o erro é o seguinte:

Unable to open Web Service tester page:
aqui aparece o endereço onde esta o projeto
Make sure the service has been deployed successfuly, and the server is running

este é o erro, porem ele so acontece se tiver mais de um webservice no projeto, se eu rodar apenas um ele funciona perfeitamente!

L

Mandrak ,

Que tecnologia vc estah usando para desenvolver o WEb Services? Eh EJB3?

Pq se for eu tive um problema parecido relacionado com o “contextRoot” do web services. Com apenas um web services ia normalmente, porém quando colocava dois ou mais nao subia. No EJB3 existe uma annotation chamada @WebContext e dentre os parâmetros que existem nela, vc passa um chamado contextRoot que deve ser o nome do jar do seu projeto, aí isto permite que voce suba vários web services no mesmo contexto.

Isso deve resolver o seu problema caso vc esteja usando EJB3.

Se nao tiver usando EJB3, tente dar uma procurada com algo relacionado ao contextRoot da sua aplicação, pode ser q seja algo nessa área.

M

bacana isso que voce falou leonickel,
resolvi pegar o log do erro e colar!

PWC1382: Allocate exception for servlet Cidades javax.servlet.ServletException at com.sun.enterprise.webservice.JAXWSServlet.doInit(JAXWSServlet.java:260) at com.sun.enterprise.webservice.JAXWSServlet.init(JAXWSServlet.java:113) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1178) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:832) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:339) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:261) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:212) at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:361) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106) Caused by: javax.xml.ws.WebServiceException: class servicos.jaxws.Alterar do not have a property of the name cidade at com.sun.xml.ws.server.sei.EndpointArgumentsBuilder$DocLit.(EndpointArgumentsBuilder.java:495) at com.sun.xml.ws.server.sei.EndpointMethodHandler.createArgumentsBuilder(EndpointMethodHandler.java:133) at com.sun.xml.ws.server.sei.EndpointMethodHandler.(EndpointMethodHandler.java:106) at com.sun.xml.ws.server.sei.PayloadQNameBasedDispatcher.(PayloadQNameBasedDispatcher.java:106) at com.sun.xml.ws.server.sei.EndpointMethodDispatcherGetter.(EndpointMethodDispatcherGetter.java:72) at com.sun.xml.ws.server.sei.SEIInvokerTube.(SEIInvokerTube.java:75) at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:204) at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:467) at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:510) at com.sun.enterprise.webservice.JAXWSServlet.registerEndpoint(JAXWSServlet.java:398) at com.sun.enterprise.webservice.JAXWSServlet.doInit(JAXWSServlet.java:252) … 29 more Caused by: javax.xml.bind.JAXBException: cidade is not a valid property on class servicos.jaxws.Alterar at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:926) at com.sun.xml.ws.server.sei.EndpointArgumentsBuilder$DocLit.(EndpointArgumentsBuilder.java:484) … 39 more

Da uma olhada, nele pra voce ver o que pode ta ocasionando o erro!

L

cara, essa exception nao ajudou muito, estas duas linhas me deixaram confuso

javax.xml.ws.WebServiceException: class servicos.jaxws.Alterar do not have a property of the name cidade at

com.sun.enterprise.webservice.JAXWSServlet.doInit(JAXWSServlet.java:252) ... 29 more Caused by: javax.xml.bind.JAXBException: cidade is not a valid property on class servicos.jaxws.Alterar at

voce poderia descrever melhor como está a arquitetura do seu ws? qual classe tem a annotations @WebService, etc…

vc estah usando qual application server? Vc tentou colocar a anotação @WebContext ? Se voce tiver usando JBOSS, esta anotação fik no jar jbossws-spi.jar caso vc esteja rodando a versão 4.2.2.GA e para versão 4.2.0.GA ela fik no jar jbossws-core.jar.

M

Cara resolvi o problema…
Era o seguinte eu passei o mesmo parametro para duas funcoes diferentes.
Ex:
nomeId

@WebMethod(operationName = “bucarNomeId”)
public NomeId[] bucarNomeId(
@WebParam(name = “Nome”) String Nome,

@WebParam(name = "Id") String Id) {

public BancoBD[] buscarCompleto(
@WebParam(name = “Nome”) String Nome,

@WebParam(name = "Id") String Id) {
    // TODO implementar operação

Apenas mudei o nome dos parametros e funcionou…

Brigado pela ajuda!

Abraços

L

Opa, que bom!!

De nada, precisando, posta mais ae!

[]'ssss!

M

Infelismente rolou mais um problema, depois que arrumei o erro anterios das variaveis…
Continua dando erro…
Segue abaixo o log do “novo erro”!

Log

PWC1382: Allocate exception for servlet Advogados

javax.servlet.ServletException at

com.sun.enterprise.webservice.JAXWSServlet.doInit(JAXWSServlet.java:260)

at

com.sun.enterprise.webservice.JAXWSServlet.init(JAXWSServlet.java:113)

at

org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1178) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:832) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:339) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:261) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:212) at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:361) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106) Caused by: javax.xml.ws.WebServiceException: class servicos.jaxws.Alterar do not have a property of the name Advogado at com.sun.xml.ws.server.sei.EndpointArgumentsBuilder$DocLit.(EndpointArgumentsBuilder.java:495) at com.sun.xml.ws.server.sei.EndpointMethodHandler.createArgumentsBuilder(EndpointMethodHandler.java:133) at com.sun.xml.ws.server.sei.EndpointMethodHandler.(EndpointMethodHandler.java:106) at com.sun.xml.ws.server.sei.PayloadQNameBasedDispatcher.(PayloadQNameBasedDispatcher.java:106) at com.sun.xml.ws.server.sei.EndpointMethodDispatcherGetter.(EndpointMethodDispatcherGetter.java:72) at com.sun.xml.ws.server.sei.SEIInvokerTube.(SEIInvokerTube.java:75) at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:204) at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:467) at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:510) at com.sun.enterprise.webservice.JAXWSServlet.registerEndpoint(JAXWSServlet.java:398) at com.sun.enterprise.webservice.JAXWSServlet.doInit(JAXWSServlet.java:252)  29 more Caused by: javax.xml.bind.JAXBException: Advogado is not a valid property on class servicos.jaxws.Alterar at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:926) at com.sun.xml.ws.server.sei.EndpointArgumentsBuilder$DocLit.(EndpointArgumentsBuilder.java:484)  39 more

Quem puder da ajuda ai!!
Obrigado

L

Cara,

esse erro que tah dando agora parece ser igual ao anterior

repare nestes trechos do log

javax.xml.ws.WebServiceException: class servicos.jaxws.Alterar do not have a property of the name Advogado at

com.sun.enterprise.webservice.JAXWSServlet.doInit(JAXWSServlet.java:252) ... 29 more Caused by: javax.xml.bind.JAXBException: Advogado is not a valid property on class servicos.jaxws.Alterar at

existem estes mesmos trechos no log anterior, soh que com outros nossos para sua classe

M

No caso intaum teria que criar uma nova classe para cada função???

M

Cara agora funcionou perfeito!
Eh o seguinte, todos os WebServices tem que ter o neme do Method difetente,
vc deve criar por associação, tipo :

[color=red] @WebMethod(operationName = “buscarNomeId”)
public NomeId[] buscarNomeIdMateriais(@WebParam(name = “Nome”)[/color]

[color=red] @WebMethod(operationName = “buscarCompleto”)
public Materiais buscarCompletoMateriais(@WebParam(name = “Nome”)[/color]

Assim todos os WebServices vão funcionar perfeitamente!!

Mais uma vez obrigado pela ajuda.
Abraços

L

humm…a sua annotation @WebMethod esta com o nome do outro metodo e ai deu o problema, eh isso neh?..

uma duvida, vc precisa realmente colocar essa anotação @WebMethod em todos os seus métodos?

pq se vc colocou @WebService na classe, isso jah diz que todos os métodos serão webmethods, a menos q vc tenha uns q nao devem ser e outros q devem…

M

leonickel,

Exatamente isso estavam com o mesmo nome, não pode ser o mesmo nome!

Ja na parte do @WebMethod, ele é criado atomaticamente, pq eu crio um add operation, assim ele ja leva o @WebMethod para o web service!

Agora se eu preferir poderia criar na mão msm assim nao precisaria usar @WebMethod

Não sei se fui claro na explicação, mas se vc nao entender post ai que eu respondo…

Qualquer duvida tamu ai…

Abraço!

L

opa, entendi sim o q vc disse,

vc deve usar algum processo automático que gera o método pra vc e assim já coloca a anotação.

sem problemas, foi soh um conselho mesmo, pq as vezes tem gente q nao gosta de fik colocando a anotação @WebMethod em todos os métodos, aí queria soh comentar que ela nao eh necessária.

boa sorte aih no ws pra vc heheheeh

[]'sss!!!

M

Isso mesmo cara!
Ele gera automatico …

Vou precisar de sorte mesmo… rsrs

To implantando ws aqui e é o nosso primeiro projeto,
por isso estamos tendo dúvidas!

valeu cara!

L

entendi,

aqui no trampo usamos ws há algum tempo, entao se vc tiver dúvidas manda msg ae q c eu souber eu tento ajudar :smiley:

boa sorte, flw!!!

M

Valeu cara, se surgir alguma dúvida
post aqui pra gente tentar resolver…

Brigado msm…

Criado 14 de fevereiro de 2008
Ultima resposta 15 de fev. de 2008
Respostas 17
Participantes 3