segunda-feira, 8 de outubro de 2012

Configuração Jetty required full java sdk

Olá galera, fiquei um tempo sumido, mas estou aqui de novo, postando mais uma solução pra quem está tentando colocar o Jetty 8 como serviço de Windows e está obtendo o erro abaixo:

HTTP ERROR 500

Problem accessing /Exemple/iniciar. Reason:
    PWC6345: There is an error in invoking javac.  A full JDK (not just JRE) is required

Caused by:

org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac.  A full JDK (not just JRE) is required
 at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
 at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
 at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:119)
 at org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:208)
 at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:384)
 at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
 at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
 at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598)
 at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486)
 at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
 at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:542)
 at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
 at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
 at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
 at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
 at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
 at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
 at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:271)
 at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:98)
 at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154)
 at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
 at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
 at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
 at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at br.com.simova.bob.system.interceptor.ApplicationSecurityInterceptor.intercept(ApplicationSecurityInterceptor.java:39)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
 at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
 at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
 at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1338)
 at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:484)
 at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
 at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:499)
 at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
 at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
 at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
 at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
 at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
 at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
 at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
 at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
 at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
 at org.eclipse.jetty.server.Server.handle(Server.java:350)
 at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
 at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
 at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
 at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
 at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
 at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)
 at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:620)
 at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46)
 at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603)
 at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538)
 at java.lang.Thread.run(Unknown Source)

Powered by Jetty://



Estava eu, vendo no site do Jetty a última atualização do Jetty-8. Resolvi então colocá-lo no ar, quando de repente o erro acima me veio à tona... Pesquisando sobre o erro, descobri que esse erro acontece por que para compilar  arquivos jsp em classes Java, você precisa de um compilador. Você pode adquirir um compilador Java da JVM se você estiver usando um JDK completo, ou a partir de um Jar de terceiros.
Em versões anteriores a 7.5.0, a infra-estrutura JSP fez uso do Java Eclipse Compiler (ecj.jar), que é fornecido em $ JETTY_HOME / lib / jsp.  Para o Jetty-7.5.0, foi atualizado a versão do JSP para jsp-impl-2.1.3.b10 (do Glassfish). Em versões acima, a infra-estrutura JSP SEMPRE tenta adquirir um compilador Java da JVM se a versão do Java é de 1,6 ou acima. Portanto, se você estiver usando um JRE, JSPs não são capazes de compilar e por  isso você deve usar um JDK completo. Alternativamente, você pode pré-compilar JSPs (que é preferível em uma implantação de produção em qualquer caso). 

Se usar o Jetty-7.5.5 ou acima (incluindo versões Jetty-8.x), você pode usar um JDK completo ou um JRE em combinação com um terceiro compilador Java (como ecj que é distribuído em $ JETTY_HOME / lib / jsp ). Para usar o compilador ecj, você precisa definir um SystemProperty. Você pode fazer isso em seu código ou em um arquivo de configuração. 

Coloque este trecho em  seu wrapper.conf:

# Java Additional Parameters
wrapper.java.additional.1=-Dorg.apache.jasper.compiler.disablejsr199=true

Pronto, com isso, seu Jetty irá subir sem problemas!
Espero ter ajudado e até mais!
Daniel Hideki.

Nenhum comentário:

Postar um comentário