[RESOLVIDO] Erro ao fazer deploy de aplicação no Jetty 7

6 respostas
mdadoorian

Olá,

Estou começando a utilizar o Jetty como Servlet Container e baixei a versão 7, para instalar no ubuntu.
Consegui rodar a pagina padrão do Jetty, porém ao colocar o .war das minhas aplicações, aparece o seguinte erro:

2009-11-04 17:24:28.145:WARN::FAILED HandlerCollection@e49dcd: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/BodyTagSupport
2009-11-04 17:24:28.145:WARN::Error starting handlers
java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/BodyTagSupport
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:307)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:307)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:307)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:307)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at org.mentawai.tag.html.dyntag.inputDate.listener.InputDateListener.init(InputDateListener.java:47)
        at org.mentawai.tag.html.dyntag.inputDate.listener.InputDateListener.contextInitialized(InputDateListener.java:63)
        at org.mentawai.tag.html.dyntag.inputDate.listener.InputDateListener.contextInitialized(InputDateListener.java:59)
        at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:643)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:189)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:913)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:584)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:341)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
        at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:164)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:161)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
        at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:164)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
        at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92)
        at org.eclipse.jetty.server.Server.doStart(Server.java:232)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
        at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:990)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:955)
        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.eclipse.jetty.start.Main.invokeMain(Main.java:394)
        at org.eclipse.jetty.start.Main.start(Main.java:546)
        at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:208)
        at org.eclipse.jetty.start.Main.main(Main.java:75)
Caused by: java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.BodyTagSupport
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:307)
        at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

Alguém poderia me ajudar?

Obrigada.

6 Respostas

mdadoorian

Outro detalhe: quando eu faço o deploy da aplicação na versão 6.1.18 do Jetty, tudo funciona sem problemas.

Diego_Marinho

Suponho que pode ser inconsistência de versões, mas isso só poderei saber verificando melhor a exceção e o código do projeto.

Mas aki na empresa eu uso a versao 6 e até hoje não me deu problemas. Afinal o jetty é um conteiner mais simples. Caso queira um mais profissional use o apache tomcat, ou o JBoss Server.

mdadoorian

Eu vou deixar a versão 6 então. :wink:
Aqui na empresa utilizamos o Tomcat atualmente, porém estamos com muitos problemas de estouro de memória, assunto que já vi em vários posts.
Estou testando o Jetty por ter lido que tinha uma melhor performance que o Tomcat.

Muito obrigada!

Diego_Marinho

mdadoorian:
Eu vou deixar a versão 6 então. :wink:
Aqui na empresa utilizamos o Tomcat atualmente, porém estamos com muitos problemas de estouro de memória, assunto que já vi em vários posts.
Estou testando o Jetty por ter lido que tinha uma melhor performance que o Tomcat.

Muito obrigada!

Cara, sobre este problema no tomcat, vc pode resolver da seguinte maneira:

  • Vc deve alterar para a metade da quantidade memória da máquina ( Ex.: meu notebook tem 1024MB ou 1 Giga de memoria) entao vc deve configurar da seguinte maneira:

Vá na pasta de instalação do Tomcat: (Ex: C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin) > tomcat6w.exe >Aba “Java” > Digite os seguinte parâmetros nos campos:

Initial memory pool: 256 MB
Maximum memory pool: 512 MB

Isso fará com que o pool de memoria inicial e final seja estabelecido, ou seja, é um buffer delimitado por vc para garantir que o tomcat não deverá haver estouro de memoria (overflow / overhead) maior que o estabelecido.

mdadoorian

No linux, eu mudaria os valores desses parâmetros do Tomcat em qual arquivo?

Diego_Marinho

Acho que deve ser isso:

when you are using tomcat as you application server for not small application you can easy get (out of memory exception). this is because the default heap size tomcat use is small and suitable only for small web applications.

to set the start and maximum heap size run the following command before starting your tomcat:

export CATALINA_OPTS=?-Xms256m -Xmx512m?

or

export JAVA_OPTS=?-Xms256m -Xmx512m?

this will create environment variable called CATALINA_OPTS or JAVA_OPTS contains the required options to make tomcat start heap size 256M and maximum heap size 512M.

Criado 4 de novembro de 2009
Ultima resposta 5 de nov. de 2009
Respostas 6
Participantes 2