2017-01-04 3 views
1

jersey 버전 1.19로 구현 된 Java 서버 (서버 A)에 연결된 Java 클라이언트가 있으므로 동일한 버전의 저지 클라이언트와 모든 기능을 저의 pom에 추가합니다 잘 했어. 내 클라이언트가 저지 버전 2.17을 사용하여 구현 된 다른 Java 서버 (서버 B)와 연결해야하는 경우 문제가 시작됩니다 ... B 서버로 요청을 보내려고하면 org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException과 서버 A를 모두 받았습니다. 요청은 정상적으로 작동했습니다. 약간의 연구가 끝난 후, 필자는 pom 파일에서 저지 클라이언트 버전을 변경해야한다고 생각했습니다. 그런 다음 서버 B에 대한 요청은 정상적으로 작동했지만 서버 A에 대한 요청은 동일한 예외를 발생시키고 있었고 저의 클라이언트 버전과 서버 B 만 제대로 작동했습니다. 저지 서버 버전의 두 가지 종류로 작업 할 수있는 방법이 있습니까? 내가지고있어 치어 파일두 가지 버전의 저지 서버가있는 Java 클라이언트

<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
     <version>2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>1.19</version> 
    </dependency> 

예외 스택 추적에서

내 종속성 :

 Jan 03, 2017 5:03:22 PM org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo 
    SEVERE: MessageBodyWriter not found for media type=application/json, type=class com.sun.jersey.api.representation.Form, genericType=class com.sun.jersey.api.representation.Form. 
    [ERROR] 2017-01-03 17:03:23 [JavaFX Application Thread] controller.login(76) - Unable To Connect to the server. 
    org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class com.sun.jersey.api.representation.Form, genericType=class com.sun.jersey.api.representation.Form. 
     at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247) ~[jersey-common-2.17.jar:?] 
     at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[jersey-common-2.17.jar:?] 
     at org.glassfish.jersey.filter.LoggingFilter.aroundWriteTo(LoggingFilter.java:302) ~[jersey-common-2.17.jar:?] 
     at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[jersey-common-2.17.jar:?] 
     at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1128) ~[jersey-common-2.17.jar:?] 
     at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:502) ~[jersey-client-2.17.jar:?] 
     at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:329) ~[jersey-client-2.17.jar:?] 
     at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:242) ~[jersey-client-2.17.jar:?] 
     at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:245) ~[jersey-client-2.17.jar:?] 
     at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:671) ~[jersey-client-2.17.jar:?] 
     at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:668) ~[jersey-client-2.17.jar:?] 
     at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[jersey-common-2.17.jar:?] 
     at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[jersey-common-2.17.jar:?] 
     at org.glassfish.jersey.internal.Errors.process(Errors.java:228) ~[jersey-common-2.17.jar:?] 

답변

1

나는 괜찮 았는데 Unirest라는 이름의 또 다른 나머지 클라이언트를 사용하여이 문제를 해결하기 위해 성공 두 서버 모두. 감사합니다.