WebServices Axis 1.4

Bom dia,

Alguém poderia me ajudar?

Segui todos os passos do tutorial “Web Services em Java com Axis - Teoria e Prática” só que com a versão 1.4 do Axis, ao criar o WS de exemplo e executa-lo aparece o seguinte erro:

AXIS error
Sorry, something seems to have gone wrong... here are the details:

Fault - ; nested exception is: 
	java.lang.RuntimeException: No compiler found in your classpath!  (you may need to add 'tools.jar')
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.lang.RuntimeException: No compiler found in your classpath!  (you may need to add 'tools.jar')
 faultActor: 
 faultNode: 
 faultDetail: 
	{http://xml.apache.org/axis/}hostname:graphix2-edb64e

O que devo fazer para resolver isso?

Obrigado

Vc adicionou essas bibliotecas no seu classpath?


set axis=C:\apl\axis-1_4\lib\
set classpath=%classpath%;%axis%activation.jar
set classpath=%classpath%;%axis%axis-ant.jar
set classpath=%classpath%;%axis%axis.jar
set classpath=%classpath%;%axis%commons-discovery-0.2.jar
set classpath=%classpath%;%axis%commons-logging-1.0.4.jar
set classpath=%classpath%;%axis%jaxrpc.jar
set classpath=%classpath%;%axis%log4j-1.2.8.jar
set classpath=%classpath%;%axis%log4j.properties
set classpath=%classpath%;%axis%mail.jar
set classpath=%classpath%;%axis%saaj.jar
set classpath=%classpath%;%axis%wsdl4j-1.5.1.jar
set classpath=%classpath%;%axis%xmlsec-1.3.0.jar

Sim coloquei

Na hora da validação não gera nenhum erro…

Quando executo http://localhost:8080/axis/Hello.jws?wsdl, é que da o erro.

Verifique o código da sua classe prq ele nao esta compilando tente dessa forma no console:
Execute esse comando dentro da pasta onde se encontra o arquivo .jws

java org.apache.axis.client.AdminClient deploy.wsdd

Oi Raphael,

Executei o comando que me disse e gerou o seguinte erro:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/client/AdminClient

Ola Rafael, voce precisa adicionar uma biblioteca ao seu projeto, essa é a biblioteca tools.jar que está dentro da pasta lib da sua instalação da JDK.
Esse biblioteca tem algumas classes que compilam codigo java em tempo de execução e o Axis necessita disso.

Acho que é isso. :wink:

Se vc configurou certo o classpath rode assim:


java -cp %CLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd  

Esse comando ira publicar seu webservice

acrescente isso no seu classpath

set classpath=%classpath%;%axis%tools.jar

Já que ele esta reclmando da biblioteca tools.jar essa biblioteca se encontra no seu jdk

Você está usando o JDK ou o JRE?
Você precisa de um compilador, portanto use o JDK.

Hum…

Pessoal muito obrigado, agora parece que deu certo, quando chamo o link http://localhost:8080/axis/Hello.jws?wsdl ele me mostra um xml…

<?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions targetNamespace="http://localhost:8080/axis/Hello.jws" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/axis/Hello.jws" xmlns:intf="http://localhost:8080/axis/Hello.jws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- 
WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)

  --> 
- <wsdl:message name="somarRequest">
  <wsdl:part name="a" type="xsd:int" /> 
  <wsdl:part name="b" type="xsd:int" /> 
  </wsdl:message>
  <wsdl:message name="aloRequest" /> 
- <wsdl:message name="aloResponse">
  <wsdl:part name="aloReturn" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="somarResponse">
  <wsdl:part name="somarReturn" type="xsd:int" /> 
  </wsdl:message>
- <wsdl:portType name="Hello">
- <wsdl:operation name="alo">
  <wsdl:input message="impl:aloRequest" name="aloRequest" /> 
  <wsdl:output message="impl:aloResponse" name="aloResponse" /> 
  </wsdl:operation>
- <wsdl:operation name="somar" parameterOrder="a b">
  <wsdl:input message="impl:somarRequest" name="somarRequest" /> 
  <wsdl:output message="impl:somarResponse" name="somarResponse" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="HelloSoapBinding" type="impl:Hello">
  <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="alo">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="aloRequest">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded" /> 
  </wsdl:input>
- <wsdl:output name="aloResponse">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/Hello.jws" use="encoded" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="somar">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="somarRequest">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded" /> 
  </wsdl:input>
- <wsdl:output name="somarResponse">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/Hello.jws" use="encoded" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="HelloService">
- <wsdl:port binding="impl:HelloSoapBinding" name="Hello">
  <wsdlsoap:address location="http://localhost:8080/axis/Hello.jws" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>

pessoal,

Fiz esse mesmo exemplo, indo no diretorio do AXIS dentro do TomCat e renomeando minha classe java para jws. Minha dúvida é como faço quando tenho um projeto dividido em pacotes, como faço?

agradeço quem puder me ajudar…