Java 提供商未向Jersey 2.8注册
我有一个Jersey 1.x应用程序,正在迁移到Jersey 2.8。My.WAR依赖于包含@Provider和@Component注释类的.JAR文件Java 提供商未向Jersey 2.8注册,java,spring,jersey,provider,Java,Spring,Jersey,Provider,我有一个Jersey 1.x应用程序,正在迁移到Jersey 2.8。My.WAR依赖于包含@Provider和@Component注释类的.JAR文件 package com.usamp.core.ui.model.utility; @Component @Provider public class UIModelObjectMapperProvider implements ContextResolver<ObjectMapper> { private final st
package com.usamp.core.ui.model.utility;
@Component
@Provider
public class UIModelObjectMapperProvider implements ContextResolver<ObjectMapper> {
private final static Logger LOG = LoggerFactory.getLogger(UIModelObjectMapperProvider.class);
private ObjectMapper
uiModelObjectMapper;
@Override
public ObjectMapper getContext(final Class<?> type) {
return
Model.class.isAssignableFrom(type)
? uiModelObjectMapper
: null;
}
public UIModelObjectMapperProvider() {
LOG.debug("UIModelObjectMapperProvider Constructed");
}
public ObjectMapper getUiModelObjectMapper() {
return uiModelObjectMapper;
}
@Resource
public void setUiModelObjectMapper(final ObjectMapper uiModelObjectMapper) {
this.uiModelObjectMapper = uiModelObjectMapper;
}
}
如您所见,这个类只是扩展了来自.JAR依赖项的类
当服务器启动时,我看到的是:
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.usamp.biddingtool.utilities.BiddingToolConfig</param-value>
</init-param>
我还使用了jersey-spring3依赖项:
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.8</version>
</dependency>
因此,似乎在一个单独的JAR中找不到@Providers,当找到它们时,Spring没有被利用
暂时,我在.WAR中创建了一个新的@Provider类,并实现它以将调用转发到Spring的bean:
@Provider
public class UIMapperProvider implements ContextResolver<ObjectMapper> {
@Override
public ObjectMapper getContext(final Class<?> type) {
return
ApplicationContextProvider
.getApplicationContext()
.getBean(UIModelObjectMapperProvider.class)
.getContext(type);
}
}
@Provider
公共类UIMapperProvider实现ContextResolver{
@凌驾
公共对象映射器getContext(最终类类型){
返回
ApplicationContextProvider
.getApplicationContext()
.getBean(UIModelObjectMapperProvider.class)
.getContext(类型);
}
}
但我不应该这样做
知道我错过了什么吗
谢谢。
-美联社_
public class BiddingToolConfig extends ResourceConfig {
public BiddingToolConfig() {
register(MultiPartFeature.class);
register(UIModelObjectMapperProvider.class);
}
}
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.8</version>
</dependency>
@Path("bid)
@Component
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class BidAPI {
@Resource
private BidService
bidService;
@Resource
private SFBidMappingService
sfBidMappingService;
@Provider
public class UIMapperProvider implements ContextResolver<ObjectMapper> {
@Override
public ObjectMapper getContext(final Class<?> type) {
return
ApplicationContextProvider
.getApplicationContext()
.getBean(UIModelObjectMapperProvider.class)
.getContext(type);
}
}