我想在我的Web应用程序(带有6.0.0.Final的.war)中使用REST服务,并且最近从jersey切换到resteasy(由于JBoss6 with REST client (jersey-client))。

我的客户端代码就是以下简单示例(从控制台调用时可以正常工作):

ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
RegisterBuiltin.register(providerFactory);

ClientRequest request = new ClientRequest(restUrl);
request.accept(MediaType.APPLICATION_XML);

ClientResponse<MyJaxbClass> response = request.get(MyJaxbClass.class);


一开始我希望RESTeasy的所有功能都可以在JBoss中使用,但是在访问该方法时却遇到了以下错误:

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
  at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
  at java.lang.Class.getConstructor0(Class.java:2699)
  at java.lang.Class.newInstance0(Class.java:326)
  at java.lang.Class.newInstance(Class.java:308)
  at org.jboss.resteasy.client.ClientRequest.createDefaultExecutorInstance(ClientRequest.java:115)
  at org.jboss.resteasy.client.ClientRequest.getDefaultExecutor(ClientRequest.java:94)
  at org.jboss.resteasy.client.ClientRequest.<init>(ClientRequest.java:125)
  at my.own.MyRestEasyClient.members(MyRestEasyClient.java:42)


好吧,没什么大不了的!尽管我想知道为什么使用不赞成使用的commons-httpcomponents,但我还是在中添加了commons-httpclient:commons-httpclient:3.1。但是错误并没有消失。我仔细检查了commons-httpclient-3.1.jar是否参战。然后我删除了commons-httpcomponents and added org.jboss.resteasy:resteasy-jaxrs:2.1.0.GA and org.jboss.resteasy:resteasy-jaxb-provider:2.1.0.GA`。为了避免(也许我已经在)jar-hell中,我使用了与JBoss6捆绑在一起的resteasy-version,但是现在出现了这个错误:

Caused by: java.lang.annotation.AnnotationTypeMismatchException: Incorrectly
  typed data found for annotation element public abstract
  javax.xml.bind.annotation.XmlNsForm
  org.jboss.xb.annotations.JBossXmlSchema.elementFormDefault()
  (Found data of type Ljavax/xml/bind/annotation/XmlNsForm;.QUALIFIED)


这不是很具体,但是如果我将jar捆绑到JBoss中已经存在的.war中,则会遇到类似的错误。我找到了ClassNotFound Exception when configuring RestEasy,但这似乎与我的问题无关。

最佳答案

几天前我们遇到了同样的问题,但是发现了这个错误报告,对我们有帮助
https://issues.jboss.org/browse/JBAS-8841

要解决(如错误报告中所述):


  我在deployers / resteasy.deployer中添加了commons-httpclient-3.1.jar到
  更正异常。将罐子添加到我的webapp无效


这对我们有用。

关于java - 带有RestEasy客户端的JBoss6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7634226/

10-11 19:25