2017-02-06 1 views
1

Ich möchte einen verwalteten JAX-WS-Client (injiziert mit @WebServiceRef) von außerhalb der Anwendung, vorzugsweise mit WebLogic Admin Console.Konfigurieren Sie JAX-WS @ WebServiceRef-Client von außerhalb der Anwendung

Legen Sie beispielsweise den Benutzernamen und das Kennwort fest, die in der HTTP-Anforderung gesendet werden, um sich beim Ausführen des Web-Service-Aufrufs auf dem Server zu authentifizieren.

Um klar zu sein, muss ich es manuell implementieren, während die Verwendung einer Funktion, die vom Container bereitgestellt wird, nur die Konfiguration erfordert.

Ich konnte es mit SAP NetWeaver tun, ist es möglich, es mit WebLogic zu tun?

@Stateless 
public class HolidayClientImpl { 

    // I want this dependency to be already configured, instead of doing it myself. 
    @WebServiceRef 
    private MyRemoteService myRemoteService; 

} 

Antwort

0

Nachdem ich viel gesucht habe, habe ich diese Funktionalität in WebLogic nicht gefunden. Es existiert nicht, zumindest nicht in Version 10.3.6 und 12.

Das heißt, Sie haben die Client-Konfiguration, um so etwas zu implementieren:

MyPort port = service.getHTTPPort(); 
Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext(); 

// URL 
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://www.remoteservice.com/service"); 

// Timeouts 
requestContext.put(BindingProviderProperties.CONNECT_TIMEOUT, 5000); 
requestContext.put(BindingProviderProperties.REQUEST_TIMEOUT, 30000); 

// Authentication 
requestContext.put(BindingProvider.USERNAME_PROPERTY, "user"); 
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password"); 
+0

Dies bedeutet, dass Sie nicht eine Anwendung ohne Änderung an Entwickler, Test und prod ohne das gleiche Passwort auf jedem System bereitstellen können? –

+0

@DavidLakatos Nein David, Sie können die Werte (Benutzername, Passwort, usw.) an anderer Stelle außerhalb Ihrer Anwendung (Datenbank, Eigenschaftendatei usw.) speichern und diese ohne Build/Deploy ändern. Mein Code hat statische Werte, aber das ist eine Code-Vereinfachung, die nur zeigt, wie Sie die Client-Konfiguration durchführen. Der Punkt hier ist, dass WebLogic keine interne Konfiguration für JAX-WS bereitstellt. Normalerweise speichern wir Eigenschaften in der Datenbank oder in einer XML-Datei. Je nach Szenario können Sie den Cache verwenden oder nicht. Normalerweise ist es eine gute Idee, sie im Speicher zu speichern, da sich solche Werte nicht oft ändern. – BonanzaOne

+0

Mein Hauptansatz wäre, einige Anwendungseigenschaften über den Weblogic-Implementierungsplan während der Bereitstellung zu ändern, ohne den Code zu ändern oder externe Ressourcen zu verwenden (z. B. Eigenschaftendatei, db). Denkst du, dass es machbar ist? –

Verwandte Themen