Question

Upgrading a servlet from jetty 9.0.4 to 9.1.2. My simple servlet does not get initialized any more when running against 9.1.2. Here is a diff generated over the two versions visualized by running mvn dependency:tree against my server distribution maven project:

-[INFO] +- org.eclipse.jetty:jetty-server:jar:9.0.4.v20130625:compile
-[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile
-[INFO] |  +- org.eclipse.jetty:jetty-http:jar:9.0.4.v20130625:compile (version managed from 9.0.4.v20130625)
-[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.0.4.v20130625:compile (version managed from 9.0.4.v20130625)
-[INFO] |  \- org.eclipse.jetty:jetty-io:jar:9.0.4.v20130625:compile
-[INFO] +- org.eclipse.jetty:jetty-jndi:jar:9.0.4.v20130625:runtime
-[INFO] |  \- org.eclipse.jetty.orbit:javax.mail.glassfish:jar:1.4.1.v201005082020:runtime
-[INFO] |     \- org.eclipse.jetty.orbit:javax.activation:jar:1.1.0.v201105071233:runtime
-[INFO] +- org.eclipse.jetty:jetty-start:jar:9.0.4.v20130625:runtime
-[INFO] +- org.eclipse.jetty:jetty-plus:jar:9.0.4.v20130625:runtime
-[INFO] |  +- org.eclipse.jetty.orbit:javax.transaction:jar:1.1.1.v201105210645:runtime
-[INFO] |  \- org.eclipse.jetty:jetty-webapp:jar:9.0.4.v20130625:runtime (version managed from 9.0.4.v20130625)
-[INFO] |     \- org.eclipse.jetty:jetty-servlet:jar:9.0.4.v20130625:runtime
-[INFO] |        \- org.eclipse.jetty:jetty-security:jar:9.0.4.v20130625:runtime
-[INFO] +- org.eclipse.jetty:jetty-deploy:jar:9.0.4.v20130625:runtime
-[INFO] |  \- org.eclipse.jetty:jetty-xml:jar:9.0.4.v20130625:runtime
+[INFO] +- org.eclipse.jetty:jetty-server:jar:9.1.2.v20140210:compile
+[INFO] |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile (version managed from 3.1.0)
+[INFO] |  +- org.eclipse.jetty:jetty-http:jar:9.1.2.v20140210:compile (version managed from 9.1.2.v20140210)
+[INFO] |  |  \- org.eclipse.jetty:jetty-util:jar:9.1.2.v20140210:compile (version managed from 9.1.2.v20140210)
+[INFO] |  \- org.eclipse.jetty:jetty-io:jar:9.1.2.v20140210:compile
+[INFO] +- org.eclipse.jetty:jetty-jndi:jar:9.1.2.v20140210:runtime
+[INFO] +- org.eclipse.jetty:jetty-start:jar:9.1.2.v20140210:runtime
+[INFO] +- org.eclipse.jetty:jetty-plus:jar:9.1.2.v20140210:runtime
+[INFO] |  \- org.eclipse.jetty:jetty-webapp:jar:9.1.2.v20140210:runtime (version managed from 9.1.2.v20140210)
+[INFO] |     \- org.eclipse.jetty:jetty-servlet:jar:9.1.2.v20140210:runtime
+[INFO] |        \- org.eclipse.jetty:jetty-security:jar:9.1.2.v20140210:runtime
+[INFO] +- org.eclipse.jetty:jetty-deploy:jar:9.1.2.v20140210:runtime
+[INFO] |  \- org.eclipse.jetty:jetty-xml:jar:9.1.2.v20140210:runtime

I'm registering the servlet class using web.xml. Any hints? I know that is not much information but maybe someone had similar problems when upgrading to 9.1... It is really only a very simplistic WebServlet class and I could not even find a guide on how to upgrade such stuff. A list of what changed (stuff that matters) would be helpful, too... I mean not simply a ChangeLog.

I don't even get an error, so jetty 9.1 seems to ignore the web.xml completely...??

jetty.xml:

<Configure id="Server" class="org.eclipse.jetty.server.Server">

    <Arg name="threadpool">
    <New id="threadpool" class="org.eclipse.jetty.util.thread.QueuedThreadPool">
        <Set name="minThreads">10</Set>
        <Set name="maxThreads">200</Set>
        <Set name="detailedDump">false</Set>
    </New>
    </Arg>

    <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.tls.port" default="8443" />
    </Set>
    <Set name="outputBufferSize">32768</Set>
    <Set name="requestHeaderSize">8192</Set>
    <Set name="responseHeaderSize">8192</Set>
    <Set name="sendServerVersion">true</Set>
    <Set name="sendDateHeader">false</Set>
    <Set name="headerCacheSize">512</Set>
    </New>

    <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"/>
                </Item>
            </Array>
        </Set>
    </New>
    </Set>

    <Call name="addConnector">
    <Arg>
        <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="8098" />
            </Set>
            <Set name="idleTimeout">30000</Set>
        </New>
    </Arg>
    </Call>

    <Set name="stopAtShutdown">true</Set>
    <Set name="stopTimeout">5000</Set>
    <Set name="dumpAfterStart">true</Set>
    <Set name="dumpBeforeStop">false</Set>

    <Call name="addBean">
    <Arg>
        <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
            <Set name="contexts">
                <Ref id="Contexts" />
            </Set>
            <Call name="setContextAttribute">
                <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
                <Arg>.*/jsp-api-[^/]*\.jar$|.*/jsp-[^/]*\.jar$</Arg>
            </Call>
        </New>
    </Arg>
    </Call>

    <Ref id="DeploymentManager">
    <Call id="webappprovider" name="addAppProvider">
        <Arg>
            <New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
                <Set name="monitoredDirName">
                    <Property name="jetty.home" default="." />/apps</Set>
                <Set name="scanInterval">0</Set>
                <Set name="extractWars">false</Set>
            </New>
        </Arg>
    </Call>
    </Ref>
</Configure>

web.xml:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5"
     xmlns="http://java.sun.com/xml/ns/javaee">

    <servlet>
    <servlet-name>FileServer</servlet-name>
    <servlet-class>de.fileserver.FileServer</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>FileServer</servlet-name>
    <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>
Was it helpful?

Solution

The jetty.home var's content has changed and is now available using the jetty.base reference. I was pointing to the wrong apps dir.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top