我想在我的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/