2010-06-24 11 views
6

Ich versuche, einen Webserver Einbettungsanlegestelle (anstatt Java EE) zu erstellen, und meine Servlets RESTfully, mit Trikot zuordnen.
Ich verwende Spring für die Abhängigkeitsinjektion und Zuordnung der Servlets als Beans Wenn ich jedoch versuchen, eine HTTP-Anforderung an die zugeordneten Servlets zu machen, bekomme ich Fehler 500 - Serverfehler oder 404, Seite nicht gefunden.
Ich bin mir nicht sicher, ob ich das richtig mache, und ich sollte wahrscheinlich eher die jetty.xml verwenden. (Fragen, ob es eine shorcut mit jetty.xml)ist möglich zu kombinieren: Jersey + Anlegesteg + Frühling

<bean id="contexts" 
    class="org.eclipse.jetty.server.handler.ContextHandlerCollection"> 
</bean> 

<bean id="server" class="org.mortbay.jetty.spring.Server" 
    init-method="start" destroy-method="stop"> 
    <property name="threadPool"> 
     <bean id="ThreadPool" class="org.eclipse.jetty.util.thread.QueuedThreadPool"> 
      <property name="minThreads" value="10" /> 
      <property name="maxThreads" value="50" /> 
     </bean> 
    </property> 
    <property name="connectors"> 
     <list> 
      <bean id="Connector" class="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
       <property name="port" value="8080" /> 
      </bean> 
     </list> 
    </property> 
    <property name="handler"> 
     <bean id="handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> 
      <property name="handlers"> 
       <list> 
        <ref bean="contexts" /> 
        <bean class="org.eclipse.jetty.server.handler.ResourceHandler"> 
         <property name="directoriesListed" value="true" /> 
         <property name="welcomeFiles"> 
          <list> 
           <value>index.jsp</value> 
          </list> 
         </property> 
         <property name="resourceBase" value="./WebContent" /> 
        </bean> 
        <bean id="myServletHandler" class="org.eclipse.jetty.servlet.ServletHandler"> 
         <property name="servlets"> 
          <list> 
           <bean id="jerseyServletContainer" class="org.eclipse.jetty.servlet.ServletHolder"> 
            <property name="name" value="jersey" /> 
            <property name="servlet"> 
             <bean class="com.sun.jersey.spi.container.servlet.ServletContainer" /> 
            </property> 
            <property name="initParameters"> 
             <map> 
              <entry key="com.sun.jersey.config.property.resourceConfigClass" 
               value="com.sun.jersey.api.core.PackagesResourceConfig" /> 
              <entry key="com.sun.jersey.config.property.packages" 
               value="servlets" /> 
             </map> 
            </property> 

           </bean> 
          </list> 
         </property> 

         <property name="servletMappings"> 
          <list> 

           <bean id="jerseyMapping" class="org.eclipse.jetty.servlet.ServletMapping"> 
            <property name="servletName" value="jersey" /> 
            <property name="pathSpec" value="/*" /> 
           </bean> 


          </list> 
         </property> 
        </bean> 
       </list> 
      </property> 
     </bean> 
    </property> 
    <property name="beans"> 
     <list> 
      <bean id="ContextDeployer" class="org.eclipse.jetty.deploy.ContextDeployer"> 
       <property name="contexts" ref="contexts" /> 
       <property name="directory" value="contexts" /> 
       <property name="scanInterval" value="5" /> 
      </bean> 
     </list> 
    </property> 
</bean> 

Ich habe eine Klasse in dem Servlets Paket: DoNothing.java


package servlets; 

import javax.ws.rs.GET; 

import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 

@Path("/nothing") 
public class doNothing 
{ 
    @GET 
    @Produces("text/plain") 
    public String returnNothing() 
    { 
     return ("test"); 
    } 


} 

was in der Welt mache ich falsch? oder soll ich fragen was in der Welt mache ich richtig?

Dank

Antwort

1

ich nach einem Weg gesucht Jersey + Spring + Embedded Jetty zu verwenden und diese Frage gefunden. Ich habe deine Methode ausprobiert und es funktioniert tatsächlich.

Wenn Sie verwenden mögen, tatsächlich Frühling Bohnen in Ihren Ressourcen können Sie Jersey-Frühling verwenden:

<bean id="server" class="org.mortbay.jetty.Server" destroy-method="stop"> 
    <property name="connectors"> 
     <list> 
      <bean id="Connector" class="org.mortbay.jetty.nio.SelectChannelConnector"> 
       <property name="port" value="8080"/> 
      </bean> 
     </list> 
    </property> 
    <property name="handlers"> 
     <list> 
      <bean class="org.mortbay.jetty.servlet.Context"> 
       <property name="contextPath" value="/"/> 
       <property name="sessionHandler"> 
        <bean class="org.mortbay.jetty.servlet.SessionHandler" /> 
       </property> 
       <property name="servletHandler"> 
        <bean class="org.mortbay.jetty.servlet.ServletHandler"> 
         <property name="servlets"> 
          <list> 
           <bean class="org.mortbay.jetty.servlet.ServletHolder"> 
            <property name="name" value="jersey" /> 
            <property name="servlet"> 
             <bean class="com.sun.jersey.spi.spring.container.servlet.SpringServlet" /> 
            </property> 
            <property name="initParameters"> 
             <map> 
             <entry key="com.sun.jersey.spi.container.ContainerRequestFilters" 
              value="com.sun.jersey.api.container.filter.LoggingFilter" /> 
             <entry key="com.sun.jersey.spi.container.ContainerResponseFilters" 
              value="com.sun.jersey.api.container.filter.LoggingFilter" /> 
            </map> 
            </property> 

           </bean> 
          </list> 
         </property> 
         <property name="servletMappings"> 
          <list> 
           <bean class="org.mortbay.jetty.servlet.ServletMapping"> 
            <property name="servletName" value="jersey"/> 
            <property name="pathSpecs"> 
             <list> 
              <value>/*</value> 
             </list> 
            </property> 
           </bean> 
          </list> 
         </property> 
        </bean> 
       </property> 
       <property name="eventListeners"> 
        <list> 
         <bean id="requestContextListener" class="org.springframework.web.context.request.RequestContextListener"/> 
         <bean id="contextLoaderListener" class="org.springframework.web.context.ContextLoaderListener"/> 
        </list> 
       </property> 
       <property name="initParams"> 
        <map> 
         <entry key="contextConfigLocation" value="classpath:META-INF/AdditionalBeansContext.xml"/> 
        </map> 
       </property> 
      </bean><!-- 
     --></list> 
    </property> 
</bean> 

In Datei AdditionalBeansContext.xml:

dann mit Ihren Ressourcen definieren: @Component Anmerkung, injizierte Bohnen mit @Autowired

Verwandte Themen