WebService...erro!

Olá pessoal ,

estou precisando de uma ajuda pois peguei um teste para WebService mas estou em duvida
na hora de gerar WSDL …

pois estou tentando gerar WSDL do arquivo EDIServices.java

e me da o erro de :

java.lang.ClassNotFoundException: webservice.EDIServices

pois o arquivo java não existe o metodo man …

A classe EDICliente não consigo compilar pois me dá erro na linha :

EDIServicesService svc = new WebServicesServiceLocator();
EDIServices s = svc.getEDIService ();

Alguém poderia me dar uma direção ou rumo que tenho que seguir …


package webservice;


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import javax.activation.DataHandler;

public class EDIServices{
	
  public boolean receberArquivo(DataHandler arquivo, String nome){
     // Verificando se o arquivo é nulo
     if(arquivo == null)
        return false;

     try {
         // Criando o arquivo de destino
         File novoArquivo = new File("c:/" + nome + ".txt");
         OutputStream out = new FileOutputStream(novoArquivo);

         // Escrevendo os dados do arquivo recebido na saida
         arquivo.writeTo(out);
         return true;
     }catch (Exception ex){
             return false;
     }
   }
}

----


package webservice;

import java.io.File;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;


public class EDICliente{
	
     public boolean enviarArquivo(File file){
           try{
        	   
        	   
                EDIServicesService svc = new WebServicesServiceLocator();
                
                EDIServices s = svc.getEDIService ();

                // Preparando o arquivo pra ser enviado
                DataHandler dh = new DataHandler(new FileDataSource(file));

                return s.receberArquivo(dh, file.getName());
           }catch(Exception ex){
                 ex.printStackTrace();
                 return false;
           }
    }
}     

---

package webservice;

import java.io.File;

public class Cliente1 {
	public static void main(String args[]){
	
		  File arquivo = new File("texto.xml");
		  
	      EDICliente edi = new EDICliente();
	      
	      boolean ret = edi.enviarArquivo(arquivo);
	      
	      if(ret)
	          System.out.println("Arquivo enviado com sucesso");
	      else
	          System.out.println("Falha no envio do arquivo");
	}
}

Esta classe (webservice.EDIServices ) precisa existir e estar no classpath.

Olá,

se puder me ajudar como está minha configuração pois está dando erro

ainda .

eo copiei o arquivo EDIServices (.class e o .java )para o diretório :

C:\apache-tomcat-5.5.15\webapps\axis\WEB-INF\jwsClasses\webservice\EDIServices

classpath =

C:\jdk1.5.0_06\bin;%CATALINA_HOME%\common\lib\servlet-api.jar;%AXIS_HOME%;C:\axis-1_4\lib\axis.jar;C:/axis-1_4/lib/wsdl4j-1.5.1.jar;C:/axis-1_4/lib/axis.jar;C:/axis-1_4/lib/axis-ant.jar;C:/axis-1_4/lib/axis-schema.jar;C:/axis-1_4/lib/commons-discovery-0.2.jar;C:/axis-1_4/lib/commons-logging-1.0.4.jar;C:/axis-1_4/lib/jaxrpc.jar;C:/axis-1_4/lib/log4j-1.2.8.jar;C:/axis-1_4/lib/saaj.jar;C:\axis-1_4\lib\activation.jar;C:\axis-1_4\lib\mail.jar;C:\axis-1_4\lib\commons-logging-1.0.4.jar;C:\axis-1_4\lib\commons-discovery-0.2.jar;C:\axis-1_4\lib\axis-schema.jar;C:\axis-1_4\lib\axis-ant.jar;C:\axis-1_4\lib\axis.jar;C:\axis-1_4\lib\activation.jar;C:\apache-tomcat-5.5.15\webapps\axis\WEB-INF\jwsClasses\webservice\EDIServices;%CLASSPATH%;

mapeamento diretório no tomcat :

  • tomcat
    • webapps
      • axis
        • WEB-INF
          • classes
          • jwsClasses
            • webservice
              • EDIService.class
              • EDIService.java

e está dando o erro nesta chamada :

C:\temps\guj\webservice>
C:\temps\guj\webservice>java org.apache.axis.wsdl.Java2WSDL -o wp.wsdl -l"http:/
/localhost:8080/axis/EDIServices" -n"urn:EDIServices" -p"webservice.ws" "urn:EDI
Services" EDIServices
java.lang.NoClassDefFoundError: EDIServices (wrong name: webservice/EDIServices)

        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:177)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
        at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
        at org.apache.axis.wsdl.fromJava.Emitter.setCls(Emitter.java:2079)
        at org.apache.axis.wsdl.Java2WSDL.run(Java2WSDL.java:584)
        at org.apache.axis.wsdl.Java2WSDL.main(Java2WSDL.java:682)

C:\temps\guj\webservice>

Cara, você não pode colocar o caminho completo da classe no CLASSPATH, como você está fazendo. Você tem que colocar o diretório onde se encontram os binários. Ex:

Se sua classe se chama webservices.EDIService, em vez de:

CLASSPATH=C:\bin\webservices\EDIService

faça:

CLASSPATH=C:\bin

vamos ver se pode me ajudar …estou fazendo no Ide Eclipse

e criei o projeto e package estão assim :

projeto : no diretorio c:\temps\guj

          package webservice

onde criei os programas java e as classes

mas quando vou rodar via msdos este comando abaixo :

  • esta certo o caminho onde coloco localhost :
  • webservice.EDIServices (ele vai gerar no servidor embaixo do TomCat ou diretorio do Eclipse essa é minha duvida ?

no classpath coloquei o caminho do tomcat pra encontrar o EDIServices.class está certo ou não ?

classpath=
C:\jdk1.5.0_06\bin;%CATALINA_HOME%\common\lib\servlet-api.jar;%AXIS_HOME%;C:\axis-1_4\lib\axis.jar;C:/axis-1_4/lib/wsdl4j-1.5.1.jar;C:/axis-1_4/lib/axis.jar;C:/axis-1_4/lib/axis-ant.jar;C:/axis-1_4/lib/axis-schema.jar;C:/axis-1_4/lib/commons-discovery-0.2.jar;C:/axis-1_4/lib/commons-logging-1.0.4.jar;C:/axis-1_4/lib/jaxrpc.jar;C:/axis-1_4/lib/log4j-1.2.8.jar;C:/axis-1_4/lib/saaj.jar;C:\axis-1_4\lib\activation.jar;C:\axis-1_4\lib\mail.jar;C:\axis-1_4\lib\commons-logging-1.0.4.jar;C:\axis-1_4\lib\commons-discovery-0.2.jar;C:\axis-1_4\lib\axis-schema.jar;C:\axis-1_4\lib\axis-ant.jar;C:\axis-1_4\lib\axis.jar;C:\axis-1_4\lib\activation.jar;C:\apache-tomcat-5.5.15\webapps\axis\WEB-INF\webservice\classes;%CLASSPATH%;

C:\>java org.apache.axis.wsdl.Java2WSDL -o wp.wsdl -l"http://localhost:8080/axis
/classes/webservice/EDIServices" -n"urn:EDIServices" -p"ws" "urn:EDIServices" ED
IServices
java.lang.ClassNotFoundException: EDIServices
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:187)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
        at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
        at org.apache.axis.wsdl.fromJava.Emitter.setCls(Emitter.java:2079)
        at org.apache.axis.wsdl.Java2WSDL.run(Java2WSDL.java:584)
        at org.apache.axis.wsdl.Java2WSDL.main(Java2WSDL.java:682)




package webservice;


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import javax.activation.DataHandler;

public class EDIServices{
	
  public boolean receberArquivo(DataHandler arquivo, String nome){
     // Verificando se o arquivo é nulo
     if(arquivo == null)
        return false;

     try {
         // Criando o arquivo de destino
         File novoArquivo = new File("c:/" + nome + ".txt");
         OutputStream out = new FileOutputStream(novoArquivo);

         // Escrevendo os dados do arquivo recebido na saida
         arquivo.writeTo(out);
         return true;
     }catch (Exception ex){
             return false;
     }
   }
}

----

Cara, calma! Você parece estar perdidasso.
Uma dica: se não souber muito o que está fazendo, é melhor dar uma estudade nos conceitos base do Java (classpath, compilador etc).

Se você está usando a IDE Eclipse, no seu projeto está configurado qual o diretório dos binários (.java compilados para .class). Esse é o diretório que deve estar no classpath para você gerar as coisas com o Axis, além, claro, das bibliotecas do Axis.

Não configure seu classpath para um milhão de coisas. Você pode configurar uma variável AXIS_LIB (com as bibliotecas do Axs) e fazer assim:

java -cp .;%AXIS_LIB% ferramenta.do.Axis [parâmetros]

Sacou?