Tomcat 10 x 0 ManchesteR

6 respostas
Jair_Rillo_Junior

Continuo apanhando aqui com o Tomcat, ou seja, ele atualiza uma vez meu servlet e na segunda da erro ae eu preciso reiniciar o tomcat.

vou colocar passo a passo a instalação, ja atualizei versão, peguei o .exe (no caso do windows) o .zip e nada.

primeiro eu descompactei o arquivo .zip e joguei dentro de c:-Java-Ferramentas

as variaveis de ambiente eu criei o CATALINA_BASE, CATALINA_HOME E TOMCAT_HOME todos apontando para o mesmo local

C:JavaFerramentasjakarta-tomcat-4.1.27

coloquei o arquivo servlet.jar no CLASSPATH.

pelo prompt eu consigo reiniciar o tomcat beleza, então acredito que as variáveis de ambientes estejam OK.

dentro do eclipse, eu uso o tomcatPlugin, o qual eu reinicio o tomcat.
Ele roda normal e consigo ver os servlets, na primeira atualização do servlet o tomcat faz normalmente, no eclipse mostra um escrito em azul falando que foi atualizado, mas na segunda vez esse escrito não aparece e meu servlet fica unavaliable.

no arquivo server.xml ja está reloaded=True, pergunta… tem mais alguma coisa pra mexer ou não?

estou pensando em instalar o apache com mod para o tomcat, ou até mesmo partir para um servidor de aplicação, JBoss no caso (ae eu preciso aprender a configurar ele).

Agradeço a ajuda desde já

Obrigado
Junior

6 Respostas

rodrigousp

Só uma dica … nada a ver com o Tomcat. Quando tiver pau com um servidor de servlets, tente usar outro e compare as mensagens de erro. Isso ajuda um monte.

Tente o “jetty” como segunda opção.

smota

Qual o erro?

Da uma olhada no log ele deve dizer o erro e posta aqui pra gente.

Não vá pro JBoss a menos que voce precise dele … trabalhar apenas com o Tomcat é bem mais facil/rapido.

rodrigousp

Só acrescentando …

Eu falei para usar jetty não o jboss.


http://jetty.mortbay.org/jetty/

Ainda … completando a vantagem deste approaching:
Certa vez eu especifiquei alguma variável errada no web.xml.
Aconteceu este pau muito estranho no tomcat de nullpointexception.
Quando eu fui utilizar o jetty, ele lançou a excessão que o struts-config.xml não foi encontrado.
Daí foi fácil corrigir.

Bom, é só uma dica,
[]´s

Jair_Rillo_Junior

bom Smota, lá vai os logs

primeiro o arquivo localhost_admin_log
2003-10-21 22:13:53 WebappLoader[/examples]: Deploying class repositories to work directory D:JavaFerramentasTomcat 4.1workStandalonelocalhostexamples
2003-10-21 22:13:53 WebappLoader[/examples]: Deploy class files /WEB-INF/classes to D:JavaFerramentasTomcat 4.1webappsexamplesWEB-INFclasses
2003-10-21 22:13:53 WebappLoader[/examples]: Reloading checks are enabled for this Context
2003-10-21 22:13:54 ContextConfig[/examples]: Configured an authenticator for method FORM
2003-10-21 22:13:54 StandardManager[/examples]: Seeding random number generator class java.security.SecureRandom
2003-10-21 22:13:54 StandardManager[/examples]: Seeding of random number generator has been completed
2003-10-21 22:13:54 ContextListener: contextInitialized()
2003-10-21 22:13:54 SessionListener: contextInitialized()
2003-10-21 22:13:54 StandardWrapper[/examples:default]: Loading container servlet default
2003-10-21 22:13:54 StandardWrapper[/examples:invoker]: Loading container servlet invoker

agora o localhost_log

2003-10-21 22:14:23 WebappLoader[/Estudos]: Reloading checks are enabled for this Context
2003-10-21 22:14:23 StandardWrapper[/Estudos:default]: Loading container servlet default
2003-10-21 22:14:23 StandardWrapper[/Estudos:invoker]: Loading container servlet invoker
2003-10-21 22:14:23 StandardManager[/Estudos]: Seeding random number generator class java.security.SecureRandom
2003-10-21 22:14:23 StandardManager[/Estudos]: Seeding of random number generator has been completed
2003-10-21 22:14:23 StandardContext[/Estudos]: Reloading this Context is completed
2003-10-21 22:14:26 StandardWrapper[/Estudos:Teste]: Marking servlet Teste as unavailable
2003-10-21 22:14:26 StandardWrapperValve[Teste]: Allocate exception for servlet Teste
javax.servlet.ServletException: Wrapper cannot find servlet class br.com.junior.TesteWeb or a class it depends on
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:891)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:668)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Unknown Source)
----- Root Cause -----
java.lang.ClassNotFoundException: br.com.junior.TesteWeb
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1444)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1289)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:885)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:668)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Unknown Source)

2003-10-21 22:14:30 StandardWrapperValve[Teste]: Servlet Teste is currently unavailable

grande né?

e no browser fica Servlet Teste is currently unavailable

Sobre o jetty, eu cheguei a ler sobre ele, achei interessante, mas como é o lance de configuração dele? é como o tomcat que tem o arquivo web.xml? esse arquivo da pra criar usando xdoclet?

Realmente eu não necessito do JBoss atualmente (estou desenvolvendo apenas JSP/Servlet), quando eu for estudar EJB ae sim eu aprendo a instalar e configurar o JBoss

cv1

Manchester, esse erro tah acontecendo pq vc esta recarregando uma classe no Tomcat (que jah nao tem lah um reloader mto bom) quando algumas dependencias dela ainda nao foram compiladas, ou copiadas pro WEB-INF/classes.

Um jeito mais tranquilo de trabalhar eh escrever um build.xml pro Ant, e fazer ele deployar o .war no Tomcat. Assim, quando o Tomcat recarregar a aplicacao, nao vai ter como mandar os arquivos pela metade :slight_smile:

Jair_Rillo_Junior

obrigado cv, eu entendi o erro que está causando, agora sobre o ant:

eu já tenho um build.xml que é responsável por gerar meu arquivo web.xml (usando xdoclet) de todas as classes.
Esse arquivo .war (nunca mexi com esse arquivo, mas ele é tipo um arquivo .jar?), o que eu devo colocar dentro dele? (minhas classes?)
pois o servlet que estou testando é bem simples, é apenas um teste para ver se o reload está funcionando

segue abaixo o código

package br.com.junior;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.junior.standard.Standarts;

/**
 * @web.servlet
 * 		name="Teste"
 * 		classe="TesteWeb"
 * @web.servlet-mapping
 * 		url-pattern = "/servlet/TesteWeb"
 * 
 * @author Júnior
 */
public class TesteWeb extends HttpServlet {

	/**
	 * Método Overriding
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		response.setContentType("text/html");
		out.println("<html><body>");
		out.println(request.getParameter("mensagem"));
		out.println("</body></html>");
	}
}

é praticamente um Hello World, é apenas para testar o tomcat mesmo.

é só essa classe que eu preciso por dentro do arquivo war?

obrigado

Criado 21 de outubro de 2003
Ultima resposta 21 de out. de 2003
Respostas 6
Participantes 4