2015-10-24 2 views
0

В моем существующем приложении этот код работает отлично:Grizzly Джерси вдруг просит applicatonContext.xml

GrizzlyHttpServer grizzlyHttpServer = new GrizzlyHttpServer(new Host("localhost", 80)); 

Однако, если я могу изменить его, чтобы использовать код из Grizzly Джерси пути к классам для JAX-RS вещи:

 ResourceConfig resourceConfig = new ResourceConfig(); 
     HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(
       URI.create("http://localhost:80/rest"), 
       resourceConfig, 
       false 
     ); 
     grizzlyHttpServer = new GrizzlyHttpServer(httpServer, new Host("localhost", 80)); 

Затем на методе createHttpServer() это прерывается с

Вызванный: java.io.FileNotFoundException: класс пути ресурса [applicationContext.xml] не может быть открыт, так как его не существует

Я не говорю, что использовать Spring. Какая здесь магия?

Вот полный трассировки стека:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException разбора XML-документа из пути класса ресурса [applicationContext.xml]; вложенное исключение java.io.FileNotFoundException: путь к классам ресурсов [applicationContext.xml] не может быть открыт, потому что не существует на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:341) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:302) на org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:174) в орг .springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:209) на org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:180) на org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:243) в орг. springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java:127) на org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java:93) на org.springframework.context.support.AbstractRefreshableApplicationContext. refreshBeanFactory (AbstractRefreshableApplicationContext.java:131) наorg.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory (AbstractApplicationContext.java:522) на org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:436) на org.springframework.context.support .ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:139) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:93) на org.glassfish.jersey.server.spring.SpringComponentProvider.createXmlSpringConfiguration (SpringComponentProvider.java : 164) по адресу org.glassfish.jersey.server.spring.SpringComponentProvider.crea teSpringContext (SpringComponentProvider.java:155) at org.glassfish.jersey.server.spring.SpringComponentProvider.initialize (SpringComponentProvider.java:98) на org.glassfish.jersey.server.ApplicationHandler.initialize (ApplicationHandler.java:430) на org.glassfish.jersey.server. ApplicationHandler.access $ 500 (ApplicationHandler.java:163) at org.glassfish.jersey.server.ApplicationHandler $ 3.run (ApplicationHandler.java:323) at org.glassfish.jersey.internal.Errors $ 2.call (Ошибки. java: 289) на org.glassfish.jersey.internal.Errors $ 2.call (Errors.java:286) на org.glassfish.jersey.internal.Errors.process (Errors.java:315) на org.glassfish .jersey.internal.Errors.process (Errors.java:297) в org.glassfish.je rsey.internal.Errors.processWithException (Errors.java:286) на org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:320) на org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler. Java: 285) на org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer (GrizzlyHttpContainer.java:331) на org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory.createHttpServer (GrizzlyHttpServerFactory.java:141) . на com.optimaize.soapworks.exampleproject.server.boot.GrizzlySoapWebServer.start (GrizzlySoapWebServer.java:39) на com.optimaize.soapworks.exampleproject.server.boot.Boot.boo t (Boot.java:38) at com.optimaize.soapworks.exampleproject.server.boot.Boot.main (Boot.java:18) Вызвано: java.io.FileNotFoundException: ресурс пути класса [applicationContext. XML] не может быть открыт, потому что не существует на org.springframework.core.io.ClassPathResource.getInputStream (ClassPathResource.java:158) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader. Java: 328) ... 30 более

ответ

0

Пользователь peeskillet нашел ответ.

У меня есть эта Maven DEPENDENCY

<dependency> 
     <groupId>org.glassfish.jersey.ext</groupId> 
     <artifactId>jersey-spring3</artifactId> 
    </dependency> 

вероятно, из зависимостей копирования вставки из примера. Я использую Spring, но я сам обрабатываю DI. Мой проект уже имеет всю весну и другие зависимости.

Простое удаление этой зависимости решает проблему.

Объяснение состоит в том, что new GrizzlyHttpServer() - это чистый код Гризли, а GrizzlyHttpServerFactory.createHttpServer() - код проекта гризли джерси. Таким образом, наличие как

<dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-grizzly2-http</artifactId> 
    </dependency> 

И вышеупомянутая jersey-spring3 вызывает поведение, как описано.

0

Как можно было догадаться, добавив фиктивный пустой applicatonContext.xml делает проблему уходят:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd"> 
</beans> 

Это слишком много волшебства для моего вкуса. Я оставлю вопрос открытым.

+0

_ «Я не говорю, чтобы использовать весну» _ - У вас должен быть 'Джерси-весна3'. Это единственный способ добиться этого.Если вы не используете Spring, то почему у вас есть эта зависимость? :-) –

Смежные вопросы