2015-09-11 121 views
3

我尝试使用码头和球衣的春季靴子。 码头部分没有问题。我可以启动服务器和弹簧资源正在运行(跟踪,指标,信息,豆类......),但我的资源没有运行。春季球衣球衣:资源不自动发现

我的配置文件是: Launcher.java

@Configuration 
@PropertySource("classpath:application.properties") 
@EnableAutoConfiguration 
@ComponentScan(basePackages = {"com.fdilogbox.report.serveur"}) 
public class Launcher extends SpringBootServletInitializer { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Launcher.class, args); 
    } 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(Launcher.class); 
    } 

    @Bean 
    public ServletRegistrationBean jerseyServlet() { 
     ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), "/api/*"); 
     registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, ResourcesConfiguration.class.getName()); 
     return registration; 
    } 

    @Bean 
    public EmbeddedServletContainerFactory containerFactory() { 
     final JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory = new JettyEmbeddedServletContainerFactory() { 
      @Override 
      protected JettyEmbeddedServletContainer getJettyEmbeddedServletContainer(Server server) { 
       return new JettyEmbeddedServletContainer(server); 
      } 
     }; 
     jettyEmbeddedServletContainerFactory.addServerCustomizers(new JettyConfiguration()); 
     return jettyEmbeddedServletContainerFactory; 
    } 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() { 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 
} 

JettyConfiguration.java

public class JettyConfiguration implements JettyServerCustomizer { 

    @Override 
    public void customize(Server server) { 
     WebAppContext webAppContext = (WebAppContext) server.getHandler(); 
     try { 
      // Load configuration from resource file (standard Jetty xml configuration) and configure the context. 
      createConfiguration("/jetty.xml").configure(webAppContext); 
      createConfiguration("/jetty-rewrite.xml").configure(server); 
     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } 
    } 

    private XmlConfiguration createConfiguration(String xml) throws IOException, SAXException { 
     return new XmlConfiguration(Launcher.class.getResourceAsStream(xml)); 
    } 
} 

ResourcesConfiguration.java

public class ResourcesConfiguration extends ResourceConfig { 

    public ResourcesConfiguration() { 
     super(); 

     PackageNamesScanner resourceFinder = new PackageNamesScanner(new String[]{"com.fdilogbox.report.serveur.business.resources"}, true); 
     registerFinder(resourceFinder); 
     register(JacksonFeature.class); 
    } 
} 

和我的资源文件:

@Path("builder") 
@Component 
public class ReportBuilderResource { 

    @Autowired 
    private ReportBuilderService reportBuilderService; 

    @GET 
    @Path("list") 
    @Produces(MediaType.APPLICATION_JSON) 
    public String[] findAll() { 
     return reportBuilderService.findAllReport(); 
    } 
} 

如果我尝试访问“localhost:9090/api/builder/list”,我得到一个404错误。 但是,如果我尝试“本地主机:9090 /豆”我得到JSon格式的所有豆。

我想我在我的配置文件中有一个错误,但我不知道在哪里。

回答

2

我发现我的错误:管理端口是9090,但正常的资源端口是8090.