基于Java的Spring WebApp没有运行Jetty9

时间:2014-12-19 21:45:33

标签: java jetty jetty-9

我有一个基于Java的Spring配置(没有web.xml)的战争项目,可以在mvn jetty上运行:run但是当我把Jetty 9放入机器时,项目没有运行。 jetty 9服务器运行但应用程序根本没有初始化。

该应用程序包含一个队列订阅者。

好像我需要一个web.xml文件。

有没有人有我缺少的想法?

Jetty 9服务器上App的xml配置文件是(编辑:使用正确的conf文件)

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<!--
        JETTY_HOME="<%=node['api']['worker']['jetty']['jetty_home']%>"
        JAVA_HOME="<%=node['api']['worker']['jetty']['java_home']%>"
        JETTY_CONSOLE="<%=node['api']['worker']['jetty']['jetty_console']%>"
        JETTY_USER="<%=node['api']['worker']['jetty']['jetty_user']%>"
        JETTY_ARGS="<%=node['api']['worker']['jetty']['jetty_args']%>"
        JETTY_RUN="<%=node['api']['worker']['jetty']['jetty_run']%>"
        JAVA_OPTIONS="<%=node['api']['worker']['jetty']['java_options']%>"
-->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
  <Get name="ThreadPool">
    <Set name="minThreads" type="int"><Property name="threads.min" default="10"/></Set>
    <Set name="maxThreads" type="int"><Property name="threads.max" default="200"/></Set>
    <Set name="idleTimeout" type="int"><Property name="threads.timeout" default="60000"/></Set>
    <Set name="detailedDump">false</Set>
  </Get>

  <Call name="addBean">
    <Arg>
      <New class="org.eclipse.jetty.util.thread.ScheduledExecutorScheduler"/>
    </Arg>
  </Call>

  <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
    <Set name="secureScheme">https</Set>
    <Set name="securePort"><Property name="jetty.secure.port" default="8443" /></Set>
    <Set name="outputBufferSize"><Property name="jetty.output.buffer.size" default="32768" /></Set>
    <Set name="requestHeaderSize"><Property name="jetty.request.header.size" default="8192" /></Set>
    <Set name="responseHeaderSize"><Property name="jetty.response.header.size" default="8192" /></Set>
    <Set name="sendServerVersion"><Property name="jetty.send.server.version" default="true" /></Set>
    <Set name="sendDateHeader"><Property name="jetty.send.date.header" default="false" /></Set>
    <Set name="headerCacheSize">512</Set>
  </New>

  <New class="org.eclipse.jetty.server.ServerConnector">
    <Arg name="server"><Ref refid="Server" /></Arg>
    <Arg name="factories">
      <Array type="org.eclipse.jetty.server.ConnectionFactory">
        <Item>
          <New class="org.eclipse.jetty.server.HttpConnectionFactory">
            <Arg name="config"><Ref refid="httpConfig" /></Arg>
          </New>
        </Item>
      </Array>
    </Arg>
    <Set name="host"><Property name="jetty.host" /></Set>
    <Set name="port"><Property name="jetty.port" default="8080"/></Set>
    <Set name="idleTimeout"><Property name="http.timeout" default="30000"/></Set>
    <Set name="soLingerTime"><Property name="http.soLingerTime" default="-1"/></Set>
    <Set name="acceptQueueSize"><Property name="http.acceptQueueSize" default="0"/></Set>
  </New>

  <Call class="java.lang.System" name="setProperty">
    <Arg>logback.configurationFile</Arg>
    <Arg>file:///conf/worker/logback.xml</Arg>
  </Call>
  <Call class="java.lang.System" name="setProperty" >
    <Arg>service.config.path</Arg>
    <Arg>/opt/webapps/worker</Arg>
  </Call>


  <Set name="handler">
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
      <Set name="handlers">
        <Array type="org.eclipse.jetty.server.Handler">
          <Item>
            <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
          </Item>
          <Item>
            <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler">
              <Set name="showContexts">false</Set>
            </New>
          </Item>
        </Array>
      </Set>
    </New>
  </Set>

  <New class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="contextPath">/</Set>
    <Set name="war"><Property name="jetty.webapps" default="." />/opt/webapps/worker.war</Set>
    <Set name="extractWAR">true</Set>
  </New>

  <Call name="addBean">
    <Arg>
      <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
        <Set name="contexts">
          <Ref refid="Contexts" />
        </Set>
        <Call id="webappprovider" name="addAppProvider">
          <Arg>
            <New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
              <Set name="monitoredDirName"><Property name="jetty.home" default="." />/webapps</Set>
              <Set name="scanInterval">1</Set>
              <Set name="extractWars">true</Set>
              <Set name="configurationClasses">
                <Array type="java.lang.String">
                  <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item>
                  <Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item>
                  <Item>org.eclipse.jetty.webapp.MetaInfConfiguration</Item>
                  <Item>org.eclipse.jetty.webapp.FragmentConfiguration</Item>
                  <Item>org.eclipse.jetty.annotations.AnnotationConfiguration</Item>
                  <Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item>
                </Array>
              </Set>
            </New>
          </Arg>
        </Call>
      </New>
    </Arg>
  </Call>

  <Set name="stopAtShutdown">true</Set>
  <Set name="stopTimeout">5000</Set>
  <Set name="dumpAfterStart"><Property name="jetty.dump.start" default="false"/></Set>
  <Set name="dumpBeforeStop"><Property name="jetty.dump.stop" default="false"/></Set>
</Configure>

jetty-console日志是

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
WARNING: System properties and/or JVM args set.  Consider using --dry-run or --exec
2014-12-19 19:32:49.749:INFO:oejs.Server:main: jetty-9.0.3.v20130506
2014-12-19 19:32:49.800:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/opt/jetty- distribution-9.0.3.v20130506/webapps/] at interval 1
2014-12-19 19:32:51.554:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@45afc369{/,file:/tmp/jetty-0.0.0.0-8080-worker.war-_-any-/webapp/,AVAILABLE}{/worker/worker.war}
2014-12-19 19:32:51.560:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/opt/jetty-distribution-9.0.3.v20130506/webapps/] at interval 1
2014-12-19 19:32:51.587:INFO:oejs.ServerConnector:main: Started ServerConnector@34cd072c{HTTP/1.1}{0.0.0.0:8080}

编辑:xml配置文件现在正确,我必须在${jetty.home}/start.ini

取消注释上述选项
# ===========================================================
# Enable additional webapp environment configurators 
# -----------------------------------------------------------
OPTIONS=plus
etc/jetty-plus.xml

# ===========================================================
# Enable servlet 3.1 annotations
# -----------------------------------------------------------
OPTIONS=annotations
etc/jetty-annotations.xml 

1 个答案:

答案 0 :(得分:1)

首先要解决一些明显的问题。

  1. 您使用的是Java 8,升级到Jetty 9.2.6(Jetty 9.0.3太旧了,不能很好地支持Java 8)
  2. 你的DTD参考不好,它是Jetty 7中的一个,它已知会在Jetty 9中引起问题。 请改用<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
  3. 您的课程参考不好,应该修复。 "org.eclipse.jetty_runˆy.server.Server"不存在