JBoss6 с клиентом RestEasy - PullRequest
       33

JBoss6 с клиентом RestEasy

1 голос
/ 03 октября 2011

Я хочу использовать службу REST в своем веб-приложении (.war с 6.0.0.Final) и недавно переключился с джерси на рестайзи (из-за JBoss6 с REST-клиентом (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 в мой .war.Но ошибка не исчезла.Я дважды проверил, что 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, я использовал resteasy-версию, которая поставляется в комплекте с JBoss6, но теперь я получаю эту ошибку:

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)

Это не совсем конкретно, но яПолучил похожие ошибки, если я упаковал банки в мой .war, которые уже доступны в JBossЯ обнаружил ClassNotFound Exception при настройке RestEasy , но, похоже, это не связано с моей проблемой.

1 Ответ

4 голосов
/ 03 октября 2011

У нас была такая же проблема несколько дней назад, но мы нашли этот отчет об ошибке, который помог нам https://issues.jboss.org/browse/JBAS-8841

Исправить (как указано в отчете об ошибке):

Я добавил commons-httpclient-3.1.jar в deployers / resteasy.deployer для исправить исключение. Добавление банки в мое веб-приложение не сработало

И это сработало для нас.

...