首页 文章

升级到9.4.8后无法启动jetty服务器

提问于
浏览
1

我最近将我的码头服务器升级到9.4.8 . 升级后我尝试在我的应用程序上执行'jettyRun'命令时出现以下错误:

12:27:58.464 [main] INFO org.eclipse.jetty.util.log - 记录初始化@ 3707ms到org.eclipse.jetty.util.log.Slf4jLog 12:28:01.854 [main] INFO org.eclipse.jetty .server.Server - jetty-9.4.8.v20171121,build timestamp:2017-11-22T02:57:37 05:30,git hash:82b8fb23f757335bb3329d540ce37a2a2615f0a8 12:28:01.948 [main] INFO org.akhikhl.gretty.JettyConfigurerImpl - 使用文件配置/ id-factory-collab:/ H:/git/uprgade/fc-parent/fc-web/build/jetty-env.xml 12:28:01.995 [main] WARN org.eclipse.jetty.xml . XmlConfiguration - FCTIDnone上的配置错误%% name %% 12:28:02.011 [main] WARN org.eclipse.jetty.xml.XmlConfiguration - FCTIDnone上的配置错误%% name %% 12:28:02.011 [main] WARN组织 . eclipse.jetty.webapp.WebAppContext - 上下文启动失败oagJettyWebAppContext @ 486bc9a4 {/ fc,file:/// H:/ git / uprgade / fc-parent / fc-web / build / inplaceWebapp /,UNAVAILABLE} java.lang .NoSuchMethodException:java.lang.Class.getMethod上的org.eclipse.jetty.server.session.SessionHandler.getSessionManager() s.java:1786)~ [na:1.8.0_162] at org.eclipse.jetty.xml.XmlConfiguration $ JettyXmlConfiguration.get(XmlConfiguration.java:740)~ [jetty-xml-9.4.8.v20171121.jar:9.4 .8.v20171121]在org.eclipse的org.eclipse.jetty.xml.XmlConfiguration $ JettyXmlConfiguration.configure(XmlConfiguration.java:471)〜[jetty-xml-9.4.8.v20171121.jar:9.4.8.v20171121] orjet.eclipse.jetty.xml.XmlConfiguration $ JettyXmlConfiguration中的.jetty.xml.XmlConfiguration $ JettyXmlConfiguration.get(XmlConfiguration.java:745)~ [jetty-xml-9.4.8.v20171121.jar:9.4.8.v20171121] . 在org.eclipse.jetty.xml.XmlConfiguration $ JettyXmlConfiguration.configure(XmlConfiguration.java:351)上配置(XmlConfiguration.java:471)〜[jetty-xml-9.4.8.v20171121.jar:9.4.8.v20171121]〜 [jetty-xml-9.4.8.v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:296)〜[jetty-xml-9.4.8.v20171121 . jar:9.4.8.v20171121] org.eclipse.jetty.xml.XmlConfiguration $ configure.call(Unknown Source)〜[na:na] at org.codehaus.groovy . runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)[groovy -2.4.11.jar:2.4.11] org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCajava:125)[groovy-2.4.11.jar:2.4.11] at org.akhikhl.gretty . JettyConfigurerImpl.applyContextConfigFile(JettyConfigurerImpl.groovy:54)〜[gretty-runner-jetty94-2.0.0.jar:na] at org.akhikhl.gretty.JettyConfigurer $ applyContextConfigFile $ 10.call(Unknown Source)〜[na:na] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite . java:113)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)[groovy-2.4.11.jar:2.4.11 ] org.akhikhl.gretty.JettyServerConfigurer.configureWithBaseResource(JettyServerConfigurer.groovy:33)〜[g retty-runner-jetty-2.0.0.jar:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)〜[na:1.8.0_162] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜 [na:1.8.0_162] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_162] at java.lang.reflect.Method.invoke(Method.java:498)〜[na :1.8.0_162] org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)[groovy-2.4.11.jar:2.4.11] at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java: 325)[groovy-2.4.11.jar:2.4.11]在groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)[groovy-2.4.11.jar:2.4.11] at groovy.lang.MetaClassImpl . invokeMethod(MetaClassImpl.java:1080)[groovy-2.4.11.jar:2.4.11] at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)[groovy-2.4.11.jar:2.4.11] at at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1087)[groovy-2.4.11.jar:2.4.11] at groovy.lang.MetaClassImpl.invokeMethod(MetaClas sImpl.java:1022)[groovy-2.4.11.jar:2.4.11] at groovy.lang.Closure.call(Closure.java:414)〜[groovy-2.4.11.jar:2.4.11] at groovy .lang.Closure.call(Closure.java:430)〜[groovy-2.4.11.jar:2.4.11]在groovy.lang.Closure $ call $ 0.call(Unknown Source)〜[na:na] at atorg.codehaus.groovy.runtisite.CallSiteArray.defaultCall(CallSiteArray.java:48)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java: 113)[groovy-2.4.11.jar:2.4.11]在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)[groovy-2.4.11.jar:2.4.11] at org.akhikhl.gretty.WebInfConfigurationEx.unpack(WebInfConfigurationEx.groovy:46)〜[gretty-runner-jetty94-2.0.0.jar:na] at org.eclipse.jetty.webapp.WebInfConfiguration.preConfigure(WebInfConfiguration.java:154 )〜[jetty-webapp-9.4.8.v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:506)〜[jetty-webapp-9.4.8 . v20171121.jar:9.4.8.v20171121]在org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:544)〜[jetty-webapp-9.4.8.v20171121.jar:9.4.8.v20171121] at at org.akhikhl.gretty.JettyWebAppContext.super $ 10 $ doStart(JettyWebAppContext.groovy)[gretty-runner-jetty94-2.0.0.jar:na] at sun.reflect.Nat在Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)的sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_162]的iveMethodAccessorImpl.invoke0(本地方法)〜[na:1.8.0_162] :43)〜[na:1.8.0_162] at java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_162] at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod) .java:93)[groovy-2.4.11.jar:2.4.11] at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)[groovy-2.4.11.jar:2.4.11] at groovy.lang .MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)[groovy-2.4.11 . jar:2.4.11] org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:152)[groovy-2.4.11.jar:2.4.11] at org.akhikhl.gretty.JettyWebAppContext.doStart(JettyWebAppContext .groovy:44)[gretty-runner-jetty94-2.0.0.jar:na] a t org.eclipse.jetty.util.compostractLifeCycle.start(AbstractLifeCycle.java:68)[jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.util.component.ContainerLifeCycle .start(ContainerLifeCycle.java:133)[jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:115)[ jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)[jetty-server-9.4.8.v20171121 . jar:9.4.8.v20171121] org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167)[jetty-server-9.4.8.v20171121.jar:9.4.8.v20171121] at org org.eclipse.jetty.util.component.ContainerLifeCycle中的.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)[jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] .start(ContainerLifeCycle.java:133)[jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.serv er.Server.start(Server.java:418)[jetty-server-9.4.8.v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java: 107)[jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)[jetty-server-9.4.8] .v20171121.jar:9.4.8.v20171121] org.eclipse.jetty.server.Server.doStart(Server.java:385)[jetty-server-9.4.8.v20171121.jar:9.4.8.v20171121] at at在org.eclipse.jetty.util.component上的org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)[jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] . LifeCycle $在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)开始$ 0.call(未知来源)[jetty-util-9.4.8.v20171121.jar:9.4.8.v20171121] [groovy-2.4.11.jar:2.4.11] org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)[groovy-2.4.11.jar:2.4.11] at org . codehaus.groovy.runtime.call site.AbstractCallSite.call(AbstractCallSi:117)[groovy-2.4.11.jar:2.4.11] at org.akhikhl.gretty.JettyServerManager.startServer(JettyServerManager.groovy:45)[gretty-runner-jetty-2.0.0 .jar:na] at org.akhikhl.gretty.ServerManager $ startServer $ 0.call(Unknown Source)[gretty-runner-2.0.0.jar:na] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall( CallSiteArray.java:48)[groov.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)[groovy-2.4.11.jar:2.4.11]在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)[groovy-2.4.11.jar:2.4.11] . akhikhl.gretty.Runner.run(Runner.groovy:117)[gretty-runner-2.0.0.jar:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)〜[na:1.8.0_162] at sun . 在java.lang.reflect的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_162]的reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_162] . 在org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite的Method.invoke(Method.java:498)〜[na:1.8.0_162] $ PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)[groovy-2.4.11.jar: 2.4.11] org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.callsite.CallSiteArray .defaultCall(CallSiteArray.java:48)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.ca llsite.AbstractCallSite.call(AbstractCallSite.java:113)[groovy-2.4.11.jar:2.4.11] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)[groovy-2.4 .11.jar:2.4.11] org.akhikhl.gretty.Runner.main(Runner.groovy:44)[gretty-runner-2.0.0.jar:na]

这是jetty-env.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">

  <Set name="contextPath">/fc</Set>

  <Set name="overrideDescriptor">build/override-web.xml</Set>

  <Get name="sessionHandler">
    <Get name="sessionManager">
      <Set name="sessionCookie">FCTID</Set>
      <Set name="sessionIdPathParameterName">none</Set>
      <Set name="sessionIdManager">
        <New class="org.eclipse.jetty.server.session.HashSessionIdManager">
          <Set name="workerName">%%name%%</Set>
        </New>
      </Set>
    </Get>
  </Get>

</Configure>

有人可以帮忙解决这个问题

1 回答

  • 1

    Servlet 3.1改变了Session配置 .

    一旦你击中Jetty 9.x,你应该更改为使用javax.servlet.SessionCookieConfig .

    示例:让我们先看看这些设置......

    <Set name="sessionCookie">FCTID</Set>
    <Set name="sessionIdPathParameterName">none</Set>
    

    这些设置了一个cookie名称并试图不使用/禁用URL跟踪模式(这种技术在Servlet 3.1中没有任何作用)顺便说一下

    in embedded-jetty:

    SessionHandler sessionHandler = webAppContext.getSessionHandler();
    sessionHandler.getSessionCookieConfig().setName("FCTID");
    sessionHandler.setSessionTrackingModes(EnumSet.of(SessionTrackingMode.COOKIE));
    

    or used in a ServletContextListener:

    import java.util.EnumSet;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.SessionTrackingMode;
    
    public class SesssionContextListener implements javax.servlet.ServletContextListener
    {
        @Override
        public void contextInitialized(ServletContextEvent sce)
        {
            ServletContext context = sce.getServletContext();
            context.getSessionCookieConfig().setName("FCTID");
            context.setSessionTrackingModes(EnumSet.of(SessionTrackingMode.COOKIE));
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent sce)
        {
        }
    }
    

    or using WEB-INF/web.xml:

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
      <session-config>
        <cookie-config>
          <name>FCTID</name>
        </cookie-config>
        <tracking-mode>COOKIE</tracking-mode>
      </session-config>
    </web-app>
    

    About HashSessionIdManager:

    旧的 HashSessionIdManager 是一个用于测试目的的"In Memory"会话ID管理器,它并不意味着在 生产环境 意义上使用 .

    只有1个会话ID管理器,称为 DefaultSessionIdManager .

    它也是Server组件,而不是WebApp特定组件 .

    About workerName:

    您需要在服务器级别设置 workerName ,或使用 JETTY_WORKER_INSTANCE 系统环境变量在启动时为该服务器设置workerName后缀 .

    workerName"node" 开头,将取 JETTY_WORKER_INSTANCE 值并追加它,产生 workerName = "node" + JETTY_WORKER_INSTANCE; .

    分配 workerName 时需要考虑的一些事项 .

    • 这是服务器级配置 .

    • 对于服务器上的所有WebApp,它都是相同的 workerName .

    • 名称中只能包含字母或数字 . (没有空格,没有标点符号,不允许其他字符)

    • 根据WebApp选择的会话数据存储或数据缓存,它可以使用这些配置中的群集名称作为前缀 .

    Some other observations:

    你的 jetty-env.xml 正在尝试做 jetty-env.xml 无法处理的事情 .

    <Set name="contextPath">/fc</Set>
    

    在WebApp生命周期中更改 jetty-env.xml 中的上下文路径为时已晚 .

    <Set name="overrideDescriptor">build/override-web.xml</Set>
    

    在查看 jetty-env.xml 之前,已经分配,读取和使用了 overrideDescriptor . 此操作不会导致任何更改,因为它在WebApp生命周期中为时已晚,无法在_1514911中更改此值 .

    这两个设置都应该移动到 ${jetty.base}/webapps/<context>.xml 文件 .

    一旦完成移动这两个设置,并更新以使用 javax.servlet.SessionCookieConfig ,您将不再拥有 jetty-env.xml .

相关问题