2016-09-27 2 views
1

Ich habe ein EAR-Projekt, das auf WildFly 10.1.0.Final bereitgestellt wird Diese EAR besteht aus einigen Gläsern und Kriegen. Ich habe einen WebService in meiner JAR-Datei.So konfigurieren Sie EJB WebServices in WildFly (im Ohr)

Ich kann nicht klar verstehen, wie ich mein Projekt konfiguriere. Ich verbringe viel Zeit in Google und Debugger ... so brauche ich Hilfe)

Meine AIM: Legen Sie die Standard AuthType/Security-Domain für meine EJB WebService in JAR auf Ear/Server-Ebene.

Für Sicherheits-Domain gefunden i Konfiguration in:

  • Standalone.xml -> Subsystem xmlns = "urn: Jboss: domain: ejb3: 4.0 (Server-Ebene, HIGHT Priorität) tag: Subsystem Xmlns = "urn: Jboss: domain: ejb3: 4.0 Umfang: Alle EJB

  • Standalone.xml -> Subsystem xmlns =" ​​urn: Jboss: domain: undertow: 3.0" (Server-Ebene, Nur für Undertow, HIGHT Priorität) Attribut: Standard-Sicherheitsdomäne (Serverebene, mittlere Priorität) Bereich: Alle WebServices

  • In jboss-app.xml (mittlere Priorität!) In EAR META-INF Beispiel: https://developer.jboss.org/thread/177666 Bereich: Alle EJB

  • XML-Datei jboss-ejb3.xml in EAR Kind jar Projekt (low Priorität) http://wildscribe.github.io/Wildfly/8.1.0.Final/subsystem/ejb3/index.html Bereich: Alle EJB

  • Sicherheitsdomäne Anmerkung auf WebService-Klasse: Annotation: org.jboss.security.SecurityDomain Scope: Einzel WebService

Auch, wie kann ich verstehen - ejb Eigenschaften mehr Priorität für ejb Bohnen einen Web Service als Web Service Eigenschaften

Aber wie kann ich Standard Auth metod BASIC? Ohne Anmerkung zur Klasse. Ich kann nicht finden ( WEB-INF/web.xml und Jboss-web.xml nicht auf meine WebService beeinflussen.

+0

Versuchen Sie mit dem 'jboss-webservices.xml' Deskriptor. Siehe https://docs.jboss.org/author/display/JBWS/Advanced+User+Guide#AdvancedUserGuide-Configurationthroughdeplacementdescriptor –

+0

Wo ist ein Minus, das wir vom Webservices-Schema haben: Ich kann an dieser Stelle keinen Platzhalter verwenden. Definieren Sie alle ejb Webservices ist für uns sehr redundant. Aber danke für dieses Beispiel, weil jemand diese Lösung ausprobieren kann. Ich warte auf einen anderen Vorschlag. – JaVanna

Antwort

0

Eigenschaften von web.xml Arbeit nur für Kriegseinsätze. Ich habe nur eine Möglichkeit gefunden, ejb jar-Bereitstellungen mit Webservices zu konfigurieren (an einer Stelle für alle Endpunkte und Bereitstellungen).

Wie wir wissen, verwendet WildFly Undertow. Wir definieren Servlets Erweiterung: http://undertow.io/undertow-docs/undertow-docs-1.2.0/#servlet-extensions

src/main/resources/hinzufügen META-INF/services/io.undertow.servlet.ServletExtension. Fügen Sie dann in dieser Datei unsere UndertowDeploymentExtension hinzu (die ServletExtension implementiert).

Dann fügen Sie in der handleDeployment Methode so etwas wie: deploymentInfo.setLoginConfig (neu LoginConfig (javax.servlet.http.HttpServletRequest.BASIC_AUTH, realm_name));

Nun werden unsere jar-Bereitstellungen ohne LoginConfig mit unserer benutzerdefinierten LoginConfig initialisiert (und wir können @WebContext weglassen). Für weitere Informationen können Sie bei WebMetaDataCreator.createLoginConfig debuggen (Wildfly-Web Service-Server-Integration-10.1.0.Final.jar)

Für schnelle Vorschau: https://github.com/wildfly/wildfly/blob/master/webservices/server-integration/src/main/java/org/jboss/as/webservices/tomcat/WebMetaDataCreator.java#L276

Auch Sie diesen Vorschlag lesen von: http://lists.jboss.org/pipermail/undertow-dev/2016-December/001801.html

0

ist Maven?

In diesem Repository https://github.com/wildfly/quickstart Sie viele Beispiele von Projekten finden für in Wildfly bereitstellen Speziell für Web-Service mit ejb dieses Beispiel sehr nützlich https://github.com/wildfly/quickstart/tree/10.x/jaxws-ejb ist zu beachten, dass in diesem Projekt ist necesary zeigen den Kontextstamm auf Jboss-web.xml:..

<jboss-web> 
    <context-root>/yourpath</context-root> 
</jboss-web> 

Und die Konfiguration für Web-Service ausgeführt wird mit Anmerkungen

/** 
* @author [email protected]@com 
*/ 
@Stateless 
@Remote(EJB3RemoteInterface.class) 
@WebService 
@SOAPBinding(style = SOAPBinding.Style.RPC) 
public class EJB3Bean01 implements EJB3RemoteInterface { 
    @WebMethod 
    public String echo(String input) { 
     return "EJB3Bean01 returning: " + input; 
    } 

}

Verwandte Themen