使用Spring XD模块中的Jersey 2?

时间:2015-07-27 20:03:34

标签: spring-xd

我在使用Spring XD打包Jersey 2客户端作为批处理作业模块的一部分时遇到了问题。 这是否可以使XD与模块中的Jersey 2罐一起使用而不是运行时提供的? 1.2版本附带平针织物 - * - 1.9罐。 我试图部署的模块在/ lib目录中有Jersey 2 jar。 这是一些与模块打包的罐子:

lib/oauth1-client-2.19.jar   OK
lib/oauth1-signature-2.19.jar   OK
lib/jersey-media-json-jackson-2.19.jar   OK
lib/jersey-common-2.19.jar   OK
lib/javax.ws.rs-api-2.0.1.jar   OK
lib/jersey-client-2.19.jar   OK

在模块部署步骤中,Jersy2调用外部REST服务:

WebTarget target = client.target(theRESTAPIEndpoint); String responseString = target.request(MediaType.APPLICATION_JSON).get(String.class);

在XD日志文件中可以看到以下异常: 2015-07-27T15:48:01-0400 1.2.0.RELEASE ERROR DeploymentsPathChildrenCache-0 step.AbstractStep - Encountered an error executing step helloSpringXDStep in job helloSpringXD2 java.lang.LinkageError: ClassCastException: attempting to castjar:file:/home//projects/poc/spring-xd-1.2.0.RELEASE/xd/lib/jersey-core-1.9.jar!/javax/ws/rs/ext/RuntimeDelegate.class to jar:file:/home//projects/poc/spring-xd-1.2.0.RELEASE/xd/custom-modules/job/myjob2.jar!/lib/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:146) ~[jersey-core-1.9.jar:1.9] at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:120) ~[jersey-core-1.9.jar:1.9] at javax.ws.rs.core.UriBuilder.newInstance(UriBuilder.java:95) ~[jersey-core-1.9.jar:1.9] at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) ~[jersey-core-1.9.jar:1.9] at org.glassfish.jersey.client.JerseyWebTarget.(JerseyWebTarget.java:71) ~[jersey-client-2.19.jar!/:na] at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:211) ~[jersey-client-2.19.jar!/:na] at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:72) ~[jersey-client-2.19.jar!/:na]

1 个答案:

答案 0 :(得分:0)

如果您需要2.0.1而不是1.9,请尝试替换xd / lib中的库(但不保证它会起作用)。