创建一个可重用的;“基础”;类扩展javax.ws.rs.core.Application
下面是一个使用Java7JDK使用JavaEE6实现的问题 处境 我试图实现一个解决方案,其中我有一个类的“核心”或“基础”版本。我有一个核心框架,它是一个单独的Java项目,目前作为core.jar存在,其他应用程序可以包括它。我想做的是在这个核心框架中有一个类似于“CoreApplication”的东西,它扩展了jax rs创建一个可重用的;“基础”;类扩展javax.ws.rs.core.Application,java,web-services,inheritance,design-patterns,jax-rs,Java,Web Services,Inheritance,Design Patterns,Jax Rs,下面是一个使用Java7JDK使用JavaEE6实现的问题 处境 我试图实现一个解决方案,其中我有一个类的“核心”或“基础”版本。我有一个核心框架,它是一个单独的Java项目,目前作为core.jar存在,其他应用程序可以包括它。我想做的是在这个核心框架中有一个类似于“CoreApplication”的东西,它扩展了jax rs应用程序类,看起来像这样: @ApplicationPath("") public class CoreApplication extends Application {
应用程序
类,看起来像这样:
@ApplicationPath("")
public class CoreApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new HashSet<Class<?>>();
resources.add(ApiListingResource.class);
resources.add(SwaggerSerializers.class);
// Other common resources from the core framework
return resources;
}
@Override
public Set<Object> getSingletons() {
Set<Object> singletons = new HashSet<Object>();
// Register the Jackson provider for JSON
JacksonJaxbJsonProvider jaxbProvider = new JacksonJaxbJsonProvider();
jaxbProvider.setMapper(getUniversalJacksonMapper());
singletons.add(jaxbProvider);
// Other common singletons from the core framework
return singletons;
}
}
public class ChildApplication extends CoreApplication {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = super.getClasses();
resources.add(ChildSpecificResource.class);
return resources;
}
...
@ApplicationPath(“”)
公共类CoreApplication扩展了应用程序{
@凌驾
public Set>resources=newhashset>getClasses(){
Set两个类实际上都扩展了应用程序
,所以这不是问题所在。问题在于@ApplicationPath
注释。带有此注释的类被用作主配置类。很好!这很好地工作了,这意味着我最初的设计是可能的。我没有意识到注释控制d主配置。我还尝试在CoreApplication
类上保留注释,并将其添加到ChildApplication
类中,该类也起作用。我不确定这是否可取,但显然可以在父级和子级上同时使用@ApplicationPath
。再次感谢。