简体   繁体   中英

Wire an existing spring ApplicationContext to REST service with JAX-RS

I could start my application with REST endpoints exposed without problem. However, I have another spring ApplicationContext created elsewhere and would like to be accessible from my REST endpoints.

Currently, I have to use a Singleton to lookup the beans. But is there a way to wire an existing ApplicationContext?

Below is what I have.

web.xml

<web-app>
  <context-param>
    <param-name>javax.ws.rs.Application</param-name>
    <param-value>package1.MyJaxRsApplication</param-value>
  </context-param>
  <listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
  </listener>
  <listener>
    <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>resteasy-servlet</servlet-name>
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>resteasy-servlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

applicationContext.xml

<beans>
  <context:component-scan base-package="package2.rest" />
</beans>

I think u will have to package your service interfaces as a separate jar and use it on other application. Together with that you will have to define service consuming spring configuration use it in you other application

<bean name="/ExposedService.htm" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
        <property name="service" ref="exposedService"/>
        <property name="serviceInterface" value="com.app.client.ExposedService"/>
    </bean>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM