2014-12-22 2 views
0

에 대한 자신감이 나는 문서를 생성하기위한 내 자바 REST 서비스와 자신감을 통합하려합니다. 나는 Dependency Injection으로 REST 서비스를 위해 Jersey-guice를 사용하고있다. 저지 버전은 1.18.2입니다. 배포 용 JBOSS 5.1.2를 사용하고 있습니다. 설정이 샘플 프로젝트와 약간 다릅니다. Jersey는 서블릿이 아닌 리스너로 사용됩니다. 내 web.xml 파일은 다음과 같습니다 -오류 - 자바 Guice 저지

com.mitchell.services.estimatehelper.ioc.GuiceServletConfig

<filter> 
    <filter-name>guiceFilter</filter-name> 
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>guiceFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

나는이 같은 GuiceServletConfig이 -

com.mitchell.services .estimatehelper.ioc.GuiceServletConfig

<filter> 
    <filter-name>guiceFilter</filter-name> 
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>guiceFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

AppInjector은 다음과 같습니다 -이를 배포 할 때

공용 클래스 AppInjector는 ServletModule를 확장 {

protected void configureServlets() { 

    bind(ServletContainer.class).in(Singleton.class); 
    final Map<String, String> params = new HashMap<String, String>(); 
    params.put("com.sun.jersey.api.json.POJOMappingFeature", "true"); 

    params.put("javax.ws.rs.Application", Application.class.getName()); 
    params.put("jersey.config.server.wadl.disableWadl", "true"); 

    ReflectiveJaxrsScanner scanner = new ReflectiveJaxrsScanner(); 
    scanner.setResourcePackage(getClass().getPackage().getName()); 
    ScannerFactory.setScanner(scanner); 

    bind(EstimateController.class); 

    bind(EstimateHelper.class) 
      .to(EstimateHelperImpl.class); 

    serve("/*").with(GuiceContainer.class, params); 
} 

은}

는, 스캐너는 아래의 예외가 발생

2014-12 -22 12 : 58 : 40,573 ERROR [STDERR] (RMI TCP 연결 (2) -127.0.0.1) SLF4J : slf4j-api 1.6.x 이상은이 바인딩과 호환되지 않습니다. 2014-12-22 12 : 58 : 40,573 ERROR [STDERR] (RMI TCP 연결 (2) -127.0.0.1) SLF4J : 바인딩이 1.5.5 또는 이전 버전입니다. 2014-12-22 12 : 58 : 40,573 ERROR [STDERR] (RMI TCP 연결 (2) -127.0.0.1) SLF4J : 바인딩을 버전 1.6.x로 업그레이드하십시오. 또는 2014년 12월 22일 2.0.x가 12 : 58 : 40,573 ERROR [... org.apache.catalina.core.ContainerBase [jboss.web [로컬 호스트]/추정치 헬퍼-RS-1.0.0] org.slf4j.impl.StaticLoggerBinder.getSingleton (: (RMI TCP 연결 (2) -127.0.0.1) 예외 클래스의 인스턴스를 com.mitchell.services.estimatehelper.ioc.GuiceServletConfig java.lang.NoSuchMethodError을 청취자에게 컨텍스트 초기화 이벤트를 전달하기) Lorg/slf4j/impl/StaticLoggerBinder; org.slf4j.LoggerFactory.getILoggerFactory에서 org.slf4j.LoggerFactory.performInitialization (LoggerFactory.java:108) 에서 org.slf4j.LoggerFactory.bind (LoggerFactory.java:128) (LoggerFactory.java:279) 에서 에서 org.slf4j.LoggerFactory.getLogger (LoggerFactory.java:252) (org.localization.java:265)) at com.mitchell.services.estimatehelper.ioc.AppInjector.configureServlets (AppInjector.java:30) at com.google.inject.servlet.ServletModule.configure (ServletModule.java:53) at com.google.inject .AbstractModule.configure (AbstractModule.java:59) at com.google.in com.google.inject.internal.InjectorShell $ 빌더에서 com.google.inject.spi.Elements.getElements에서 ject.spi.Elements $ RecordingBinder.install (Elements.java:223) (Elements.java:101) . 빌드 (InjectorShell.java:133) 에서 com.google.inject.internal.InternalInjectorCreator.build (InternalInjectorCreator.java:103) at com.google.inject.Guice.createInjector (Guice.java:95) at com. google.inject.Guice.createInjector (Guice.java:72) at com.google.inject.Guice.createInjector (Guice.java : 62)

이 문제를 계속 연구 한 후에이 오류는 JBoss에서 사용하는 로깅 라이브러리로 인한 것임을 깨달았습니다. 나는이 문제를 해결하기 위해 할 수있는 일

있습니까 : 오류는 예외 클래스 com.mitchell.services.estimatehelper.ioc.GuiceServletConfig java.lang.NoSuchMethodError의 인스턴스를 청취자에게 초기화 이벤트가 컨텍스트를 보내는입니까? ? 도와주세요!!

감사합니다, SDD

답변

0

확인 의존하여 응용 프로그램의 경우.

Swagger-Core는 SLF4J 1.6.3을 사용하며 버전 1.5.5 이하로 종속성을 갖는 것처럼 보입니다.

maven을 사용하는 경우 mvn dependency:list을 사용하여 유효한 종속성을 확인하고 이전 버전에서 의존성 가져 오기를 확인하려면 mvn depdendency:tree을 사용할 수 있습니다.

maven을 사용하는 경우 <exclusions>을 사용하여 이전 SLF4J 종속성을 제거하거나 자신의 pom.xml에 명시 적으로 종속성을 추가 할 수 있습니다.

다른 빌드 도구 (그라데이션 등)를 사용하는 경우 SLF4J의 이전 버전이 어디서 왔는지 알 수있는 유사한 도우미 도구가 있다고 상상합니다.

+0

고마워요! 내가 maven을 사용하고 있지만, maven 종속성을 확인할 때 SLF4J에 의존하지 않습니다. SLF4J에 의존하는 JBoss라고 생각합니다. 그 일을 위해 할 수있는 일이 있는지 확실하지 않습니다. – sdd

+0

swagger-core가 그것을 끌어 오기 때문에 적어도 하나의 SLF4J 종속성이 있어야합니다. – Ron