创建一个可重用的;“基础”;类扩展javax.ws.rs.core.Application

创建一个可重用的;“基础”;类扩展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 {

下面是一个使用Java7JDK使用JavaEE6实现的问题

处境 我试图实现一个解决方案,其中我有一个类的“核心”或“基础”版本。我有一个核心框架,它是一个单独的Java项目,目前作为core.jar存在,其他应用程序可以包括它。我想做的是在这个核心框架中有一个类似于“CoreApplication”的东西,它扩展了jax rs
应用程序
类,看起来像这样:

@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
。再次感谢。