RESTEasy nicht anzeigen meine Spring-bean mit benutzerdefinierten Frühjahr ContextLoader

  • RESTEasy 2.0.1 GA
  • Java 1.6
  • Spring 3.0.3

Ich habe alles versucht, ich kann nicht Kopf oder Schwanz, was Los ist. Ich habe eine Spring-MVC-Anwendung, jedoch würde ich gerne einige RESTEasy Endpunkte verfügbar außerhalb das Spring MVC-app, sondern in den gleichen container, die letztendlich zu können, Draht in die gleichen Bohnen.

Als ersten Schritt, ich bin einfach versuchen, stand-up-RESTEasy im inneren des Containers Anfragen bedienen, welche aus einer Spring-bean konfiguriert. Ich habe versucht, den vorformulierten, von den Anweisungen und haben auch versucht, die manuelle Installation, ohne Erfolg.

Bean

@Resource
@Path("/")
public class NeighborComparison {

    private String foo;

    @GET @Path(value="customer") @Produces("text/plain")
    public String getNeighborComparison() {
        return "foo";
    }
}

web.xml

<context-param>
    <param-name>resteasy.servlet.mapping.prefix</param-name>
    <param-value>/api</param-value>
</context-param>

<listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>

<!-- NOT configuring SpringContextLoaderListener because I declare my own, so if I do, everything
     blows up, plus  all it actually does is sanity check configuration -->
<listener>
    <listener-class>com.example.MyCustomContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>Resteasy</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Resteasy</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

applicationContext.xml

<bean id="resteasy.providerFactory" class="org.jboss.resteasy.spi.ResteasyProviderFactory"
      factory-method="getInstance">
</bean>

<bean id="resteasy.dispatcher" class="org.jboss.resteasy.core.SynchronousDispatcher">
    <constructor-arg ref="resteasy.providerFactory"/>
</bean>

<bean id="resteasy.spring.bean.processor" class="org.jboss.resteasy.plugins.spring.SpringBeanProcessor">
    <description>
        Add Resources and @Providers to the appropriate places
        in Resteasy's infrastructure
    </description>
    <constructor-arg ref="resteasy.dispatcher"/>
</bean>

<bean id="neighborComparison" class="opower.api.customer.neighbor_comparison.NeighborComparison">
</bean>

Gemäß der Dokumentation, alles, was ich zu tun ist “registrieren Sie manuell die RESTeasy BeanFactoryPostProcessor durch die Zuweisung einer Instanz von org.jboss.resteasy.plugins.Frühling.SpringBeanProcessor". Ich glaube, in diesem Frühjahr Konfiguration funktioniert.

Jetty gestartet und die app-Kontext hoch dreht ohne Probleme. Die Anwendung funktioniert normal, aber wenn ich

> curl -H"Accept: text/plain" localhost:8080/ei/api/customer

("ei" ist der Anwendungskontext). Das log zeigt (diese und nur diese):

2011-03-29 16:44:24,153 DEBUG [qtp-575315405-0] [EI] [] [asy.core.SynchronousDispatcher] PathInfo: /customer
2011-03-29 16:44:24,156 DEBUG [qtp-575315405-0] [EI] [] [asy.core.SynchronousDispatcher] Failed executing GET /customer
org.jboss.resteasy.spi.NotFoundException: Could not find resource for relative : /customer of full path: http://localhost:8080/ei/api/customer

Selbst wenn ich Sie davon überzeugen konnte RESTEasy, der mir den Zuordnungen, es scheint, dass es nur nicht entdecken, meine Bohne.

Wenn ich eine Karte, die explizit über die resteasy.resources context-param, es funktioniert, aber offenbar keinen Zugang zu auto-WLAN-Spring-Bean.

Alles, was ich versuchen kann? Ich habe debug-log auf die gesamte RESTEasy codebase und ich bekomme keine Nachrichten. Ich habe auch bestätigt, dass der Frühling ist in der Tat schafft mein bean, so ist es nur, dass RESTEasy ist nicht zu finden.

  • Spring MVC hat seine eigene REST-Stil-Rahmen. Warum nicht einfach verwenden, und vermeiden Sie das ganze problem?
  • Spring MVC "rest" - Rahmen ist unglaublich schwach und feature-verhungert im Vergleich zu JAX-RS
  • Wenn dein Codebeispiel ist ein Beispiel dafür, dann ist es leicht in der Lage.
  • Dave, können Sie bitte teilen Sie die richtige Lösung? Danke.
InformationsquelleAutor davetron5000 | 2011-03-29
Schreibe einen Kommentar