使用jersey-spring3和现有的Spring应用程序上下文来休息Web服务
作者:互联网
我有一个现有的Spring应用程序,我自己的上下文被引导
来自几十个Spring xml文件.
Grizzly Web服务器开始发布Soap服务.
现在我也想从同一个Grizzly那里提供休息请求.
我正在使用jersey-spring3,但它启动了自己独立的应用程序上下文
applicationContext.xml中.
这是创建Grizzly HttpServer的代码,其中包含Rest和Soap Web服务
已注册:
//rest services
ResourceConfig resourceConfig = new ResourceConfig(
RestService1.class, //these are
RestService2.class //jersey-spring services
);
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create("http://localhost:8080/rest"), resourceConfig, false);
//soap services
HttpHandler httpHandler = new JaxwsHandler(mySoapWebService, false);
httpServer.getServerConfiguration().addHttpHandler(httpHandler, myPath);
httpServer.start();
My Rest服务(由第二个Spring上下文创建)具有来自第一个应用程序上下文的注入依赖项.
这些注射显然不起作用. Curreetly我自己用一些hacky代码手动注入它们.
在现有应用程序中为Rest请求处理注入Spring服务的正确方法是什么?
球衣重新利用现有的背景?
解决方法:
看看GitHub上Jersey项目的helloworld-spring-annotations.您只需要在Jersey应用程序中使用set the "contextConfig"
property,其值为Spring ApplicationContext的实例
resourceConfig.property("contextConfig",
new AnnotationConfigApplicationContext(SpringAnnotationConfig.class));
然后你应该能够将你的Spring组件@Autowired到你的Jersey组件中.
也可以看看:
> Combining Spring project and Jersey
标签:java,rest,spring,jersey-2-0,grizzly 来源: https://codeday.me/bug/20190628/1319368.html