Dúvida sobre Web Services

Criei duas classes, empregado e serviço, a classe serviço instancia empregado. Quando eu mando criar o web Service pelo Eclipse, ela me dá o seguinte erro:

14/12/2007 14:45:21 org.apache.axis.configuration.EngineConfigurationFactoryServlet getServerEngineConfig
SEVERE: Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.wsdd
14/12/2007 14:45:22 org.apache.axis.deployment.wsdd.WSDDService deployTypeMapping
SEVERE: Unable to deploy typemapping: {http://DefaultNamespace}Empregado
java.lang.ClassNotFoundException: DefaultNamespace.Empregado
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1362)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
	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.deployment.wsdd.WSDDTypeMapping.getLanguageSpecificType(WSDDTypeMapping.java:183)
	at org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:542)
	at org.apache.axis.deployment.wsdd.WSDDService.initTMR(WSDDService.java:253)
	at org.apache.axis.deployment.wsdd.WSDDService.<init>(WSDDService.java:233)
	at org.apache.axis.deployment.wsdd.WSDDDeployment.<init>(WSDDDeployment.java:192)
	at org.apache.axis.deployment.wsdd.WSDDDocument.<init>(WSDDDocument.java:78)
	at org.apache.axis.utils.Admin.processWSDD(Admin.java:111)
	at org.apache.axis.utils.Admin.process(Admin.java:158)
	at org.apache.axis.utils.Admin.AdminService(Admin.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.axis.providers.java.MsgProvider.processMessage(MsgProvider.java:126)
	at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
	at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
	at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
	at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
	at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
	at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
	at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	at java.lang.Thread.run(Thread.java:619)

Alguém sabe o que poder ser o erro?

O que pode ser esse config file, aonde configuro, ou encontro esse arquivo?

Você está errando na declaração do seu Serviço do WSDL, o nome do pacote não foi localizado.

ThiagoWorldCoder,

As duas classes empregado e serviço são classes que voce vai colocar como sendo webservice ou apenas uma dessas duas e a outra seria uma classe secundária, por exemplo?

Coloque o código delas para podermos ter uma idéia melhor :smiley:

[]'ssss!

Hum, o que o hugov disse faz sentido

Ja mexi com web services algumas vezes e parece que para fazer um web service em axis vc tem q colocar a sua classe no package default do seu projeto, nao pode estar dentro de br.com.webservice.xxx por exemplo, tem q estar na raiz…

tente fazer isso e ver c resolve :slight_smile:

Galera, eu estou fazendo essa web services através do eclipse, a classe que vai se tornar a JWS é a classe RecursosHumanos (eu coloquei o nome errado não é Servico), olhem o código das duas:

public class RecursosHumanos {
	public RecursosHumanos() {
	}

	public void incluirEmpregado( String nome, String cargo, double salario ) {
		//acessa o BD e insere na tabela
	}

	public int contarEmpregados() {
		//acessa o BD e faz um COUNT
		return (int) (Math.random() * 100);
	}

	public double calcularSalarioEmDolar( double salario ) {
		return salario * VALOR_DOLAR;
	}

	public Empregado pesquisar( int codigo ) {
		//simula a busca de um funcionário no BD
		Empregado emp = new Empregado();
		emp.setNome( "José da Silva" );
		emp.setCargo( "Gerente" );
		emp.setSalario( 5000.0 );
		return emp;
	}

	private static final double VALOR_DOLAR = 2.00;
}

public class Empregado {
	
	private String nome;
	private String cargo;
	private double salario;

	public Empregado() {
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCargo() {
		return cargo;
	}

	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	public double getSalario() {
		return salario;
	}

	public void setSalario(double salario) {
		this.salario = salario;
	}
}

Esses são os .jars que eu estou usando no projeto:
axis.jar, commons-discovery-0.2.jar, commons.logging.jar, jaxrpc.jar, saaj.jar, wsdl4j.jar activation.jar,
axis-schema.jar
Quando mando rodar pelo eclipse, ele gera aquele erro. Não consegui descobrir ainda o que pode ser.

[quote=leonickel]
Ja mexi com web services algumas vezes e parece que para fazer um web service em axis vc tem q colocar a sua classe no package default do seu projeto, nao pode estar dentro de br.com.webservice.xxx por exemplo, tem q estar na raiz…
tente fazer isso e ver c resolve :slight_smile: [/quote]

isso não tem nada a ver, a classe pode e deve estar em um pacote. suas classes que vão trafegar pelo WS precisam implementar Serializable.
depois de gerado o wsdl, verifique com ficou o formato e se as suas classes estão declaradas la.

[]´s

leonickel: Se eu não instanciar nenhuma classe na JWS ele cria o Web Services normalmente, exemplo, uma calculadora. Mas quando eu crio uma JWS que instancia uma classe do projeto, ele me causa aquele erro, as classes são aquelas que eu coloquei lá em cima, o JWS é o RecursosHumanos.
O que vocês acham que pode ser?

vc criou uma classe java e renomeou p/ .jws???

isso não vai funcionar, isso so funciona se vc trabalhar com os tipos do java, tipo String, int… e assim vai.
Com suas classes isso não vai funcioanar. De uma lida na documentação para entender pq.

[]´s

jgbt: Eu não renomeei a classe para jws, estou construindo a web service pelo Eclipse, ele próprio gera tudo.
Você já chegou à usar esse recurso no eclipse?