2016-04-27 16 views
0

Ich kann org.apache.httpcomponents nicht in Wildfly 10 arbeiten. Ich habe es nicht versucht 9. Der Fehler, den ich bekomme, ist im Grunde genommen.Wie benutzt man httpcomponents in Wildfly 10 mit EAR-Projekt?

Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest from [Module "deployment.opca-ear.ear.opca-ejb.jar:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93) 
    ... 185 more 

Ich sah Wildfly 8.1 ClassNotFound org.apache.http.conn.ClientConnectionManager, aber jboss-deployment-structure.xml dort beschriebene hier nicht funktioniert.

Ich habe verschiedene Kombinationen von Dingen in der POM-Datei ausprobiert, aber damit komme ich nicht voran.

Die Klasse schlägt beim Erstellen fehl, daher verursachen die Importanweisungen Probleme.

Ich konnte nicht auf das Modul zugreifen oder die benötigten JAR-Dateien in das EAR-Lib-Verzeichnis bereitstellen.

EDIT: Ich benutze JBoss Developer Studio. Ich glaube, ich mache Fortschritte, wenn ich meine opca-ear.ear-Datei manuell in das Deployment-Verzeichnis kopiere, dann werden die httpclient- und httpcore-jars bereitgestellt, aber nicht, wenn ich sie von jbstudio aus deploye, also ist das ein Problem mit jboss-modules.jar Bereitstellungen. Nicht in der Lage zu sein, von jbstudio zu debuggen/zu deployen, wird ein Schmerz sein. Httpclient und httpcore befinden sich in meiner Datei opca-ear.ear im Verzeichnis lib sowie im Verzeichnis ejb/target/opca-ear/lib.

Wenn ich so etwas wie jboss-deployment-structure.xml oder vielleicht ein Eintrag in den eine Manifest-Datei zu den org.apache.httpcomponents Ressourcen, um den Client-Zugriff, dass Wildfly bietet so arbeitet bekommen kann dann hätte ich nicht um jboss-modules.jar zu kümmern.

SOLUTION: Wie in der akzeptierten Antwort erwähnt, arbeitet jboss-deployment-structure.xml nur auf "voll" Installationen, so habe ich einen manifest.mf Eintrag

Dependencies: org.apache.httpcomponents 

und die Maven-ejb-Plugin aktualisiert, es zu benutzen:

<artifactId>maven-ejb-plugin</artifactId> 
<version>2.5.1</version> 
<configuration> 
    <!-- Tell Maven we are using EJB 3.1 --> 
    <ejbVersion>3.1</ejbVersion> 
    <archive> 
    <manifestFile>${basedir}/src/main/resources/META-INF/manifest.mf</manifestFile> 
    </archive> 
</configuration> 
+0

Wo sind die Http-Komponenten-Gläser in Ihrer EAR-Datei installiert? Im Verzeichnis EAR/lib? Hast du dort sowohl httpclient als auch httpcore? –

+0

Hi @SteveC, siehe EDIT's. –

+0

Ihre Bereitstellung enthält jboss-modules.jar? –

Antwort

2

Es hängt alles davon ab, welcher Code es benötigt. Die jboss-deployment-structure.xml, die Sie erwähnen, wird nicht funktionieren, wenn Sie Ihre 'volle' Anwendung nicht deklarieren.
Vielleicht sollten Sie einfach ein Manifest mit dem Eintrag Abhängigkeiten hinzufügen: org.apache.httpcomponents im Jar/Krieg, der es braucht.
Tkae ein Blick auf https://docs.jboss.org/author/display/WFLY10/Class+Loading+in+WildFly

+0

Ok, das sind gute Informationen. Das Manifest scheint zu funktionieren. –