Parametro de retorno em Web Service

6 respostas
M

Ola a todos.

Estou desenvolvendo um web service e gostaria que um metodo tivesse uma variavel de retorno do tipo String. A assinatura do metodo é a seguinte:

@WebMethod
	public boolean realizarLogin(
			@WebParam(name="login") String login, 
			@WebParam(name="password") String password,
			@WebParam(name="retMsg", mode=Mode.INOUT) String retMsg)
	{

Porem qualquer coisa diferente de Mode.IN da pau na hora de fazer o deploy no Jboss. To startando o Jboss via Eclipse.

Segue a mensagem de erro

15:05:54,749 ERROR [MainDeployer] Could not start deployment: file:/C:/jboss-4.2.2.GA/server/default/deploy/webservice.war
java.lang.IllegalStateException: Cannot synchronize to any of these methods:
public boolean com.xxxxxxx.administrativo.Usuario.realizarLogin(java.lang.String,java.lang.String,java.lang.String)
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
public java.lang.String java.lang.Object.toString()


OperationMetaData:
 qname={http://administrativo.xxxxxxx.com/}realizarLogin
 javaName=realizarLogin
 style=document/literal/WRAPPED
 oneWay=false
 soapAction=
ParameterMetaData:
 xmlName={http://administrativo.xxxxxxx.com/}realizarLogin
 partName=realizarLogin
 xmlType={http://administrativo.xxxxxxx.com/}realizarLogin
 javaType=com.xxxxxxx.administrativo.jaxws.RealizarLogin
 mode=IN
 inHeader=false
 index=0
 wrappedParameters=[[name = login, type = java.lang.String, typeArgs = null, variable = login, index = 0], [name = password, type = java.lang.String, typeArgs = null, variable = password, index = 1], [name = retMsg, type = java.lang.String, typeArgs = null, variable = retMsg, index = 2]]
ReturnMetaData:
 xmlName={http://administrativo.xxxxxxx.com/}realizarLoginResponse
 partName=realizarLoginResponse
 xmlType={http://administrativo.xxxxxxx.com/}realizarLoginResponse
 javaType=com.xxxxxxx.administrativo.jaxws.RealizarLoginResponse
 mode=OUT
 inHeader=false
 index=-1
 wrappedParameters=[[name = return, type = boolean, typeArgs = null, variable = return, index = -1], [name = retMsg, type = java.lang.String, typeArgs = null, variable = retMsg, index = 2]]
	at org.jboss.ws.metadata.umdm.OperationMetaData.eagerInitialize(OperationMetaData.java:485)

mais um trilhao de erros...

Bem, eu sou beginner plus plus em Java, sou do mundo C# e jogaram essa bigorna pra mim matar no peito e chutar pra gol. Podem me xingar pq devo estar fazendo alguma coisa muito estupida. Se alguem puder me dar uma luz eu agradeço.

Abraços

6 Respostas

E

Hum… será que você não pode usar Holder ? É que INOUT precisa de Holder, se não me engano.

@WebMethod  
     public boolean realizarLogin(  
             @WebParam(name="login") String login,   
             @WebParam(name="password") String password,  
             @WebParam(name="retMsg", mode=Mode.INOUT) Holder<String> retMsg)
M

Cara, obrigado pela rsposta ultra rápida. Funcionou perfeitamente.

A unica coisa é que tive que mudar o retorno de

if(u.realizarLogin(login, password)){ ret = true; retMsg = "Login realizado com sucesso"; }
para

if(u.realizarLogin(login, password)){ ret = true; retMsg.value = "Login realizado com sucesso"; }

O xml de retorno ficou assim:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Header/> <env:Body> <ns2:realizarLoginResponse xmlns:ns2="http://administrativo.xxxxxxx.com/"> <return>false</return> <retMsg>Erro ao validar login/senha</retMsg> </ns2:realizarLoginResponse> </env:Body> </env:Envelope>

Agora preciso ver que tipo de variavel será no cliente que invocar esse método, se será String ou holder…

Brigadão

[quote=entanglement]Hum… será que você não pode usar Holder ? É que INOUT precisa de Holder, se não me engano.

V

Putlz… queria saber criar webservices… não manjo nada… Tem algum material?

M

Vinicius, eu segui um tutorial aqui do GUJ mesmo… Digita na caixa pesquisar, Web Services que vem bastante coisa.

Os paus eu fiquei quebrando a cabeça pra resolver. O pior deles foi não saber que eu tinha que copiar o JAR com as classes da aplicação pro diretorio LIB do Jboss.

Tenho uma semana de Java. Se eu que sou ultra-hiper-master-mega-beginner em java consegui, vc tb consegue.

Segue outros tutoriais que andei catando na web

http://www.javabeat.net/articles/40-creating-webservice-using-jboss-and-eclipse-europa-3.html
http://www.mastertheboss.com/en/web-interfaces/101-jboss-web-services-part-1.html
http://docs.jboss.org/jbossas/jboss4guide/r2/html/ch12.html
http://www.netbeans.org/kb/docs/websvc/jax-ws.html
http://www.netbeans.org/kb/docs/websvc/client.html
http://www.netbeans.org/kb/docs/websvc/jaxb.html

[]'s

M

Complementando, pra testar to usando o soapUI…

Vinicius, eu segui um tutorial aqui do GUJ mesmo… Digita na caixa pesquisar, Web Services que vem bastante coisa.

Os paus eu fiquei quebrando a cabeça pra resolver. O pior deles foi não saber que eu tinha que copiar o JAR com as classes da aplicação pro diretorio LIB do Jboss.

Tenho uma semana de Java. Se eu que sou ultra-hiper-master-mega-beginner em java consegui, vc tb consegue.

Segue outros tutoriais que andei catando na web

http://www.javabeat.net/articles/40-creating-webservice-using-jboss-and-eclipse-europa-3.html
http://www.mastertheboss.com/en/web-interfaces/101-jboss-web-services-part-1.html
http://docs.jboss.org/jbossas/jboss4guide/r2/html/ch12.html
http://www.netbeans.org/kb/docs/websvc/jax-ws.html
http://www.netbeans.org/kb/docs/websvc/client.html
http://www.netbeans.org/kb/docs/websvc/jaxb.html

[]'s

V

Pultz… vlw mesmo galera… vou fazer uma aplicacao em CDC e queria mto já usar webservices!!! Um abraco!

Criado 28 de outubro de 2009
Ultima resposta 28 de out. de 2009
Respostas 6
Participantes 3