Я хочу использовать службу 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 , но, похоже, это не связано с моей проблемой.