web-dev-qa-db-fra.com

JAXWS - comment changer l'adresse du point de terminaison

Comment puis-je changer dynamiquement l'adresse que mon client JAXWS utilise? Ce client a été généré par wsimport.

48
Kico Lobo

Résolution du problème à l'aide d'Apache CXF.

Avec seulement deux lignes de code! Voici l'extrait:

URL url_wsdl = new URL("http://myserver/myservice?wsdl");
Service service = Service.create(url_wsdl, new QName("http://myaddress...", "ServiceName"));
return service.getPort(MyJAXWSPortClass.class);
12
Kico Lobo

Vous pouvez y parvenir à l'aide de l'interface BindingProvider.

point de terminaison personnalisé JAX-WS

/**
 * The following snippets shows how to set a custom endpoint for a JAX-WS generated WebClient on runtime
 */

// Get the service and the port
SampleService service = new SampleService();
Sample port = service.getESamplePort();

// Use the BindingProvider's context to set the endpoint
BindingProvider bp = (BindingProvider)port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://www.aviramsegal.com/ws/sample");

/* Optional  credentials */
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "user");
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "password");
port.callSampleMethod();
99
Aviram Segal

Je suis nouveau dans l'intégration Paypal, je ne suis pas sûr de l'API Adaptive Payment. Mais nous avons le privilège de vérifier si l'identifiant de messagerie spécifique ayant un compte dans Paypal ou non en utilisant la méthode GetVerifiedStatus .

Veuillez utiliser l'URL wsdl du sandbox ci-dessous pour vérifier les e-mails

URL: https://svcs.sandbox.Paypal.com/AdaptiveAccounts?wsdl

La réponse sera comme ci-dessous

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <ns2:GetVerifiedStatusResponse xmlns:ns2="http://svcs.Paypal.com/types/aa">
         <responseEnvelope>
            <timestamp>2015-07-20T23:42:46.661-07:00</timestamp>
            <ack>Success</ack>
            <correlationId>5cea9a8575ab9</correlationId>
            <build>17345626</build>
         </responseEnvelope>
         <accountStatus>UNVERIFIED</accountStatus>
         <countryCode>IN</countryCode>
         <userInfo>
            <emailAddress>[email protected]</emailAddress>
            <accountType>PERSONAL</accountType>
            <accountId>6KD7EVWM2E2AQW</accountId>
            <name>
               <salutation/>
               <firstName>anand</firstName>
               <middleName/>
               <lastName>anand</lastName>
               <suffix/>
            </name>
            <businessName/>
         </userInfo>
      </ns2:GetVerifiedStatusResponse>
   </soapenv:Body>
</soapenv:Envelope>

Remarque: lors de la création du stub, n'oubliez pas de définir le point de terminaison comme ci-dessous. si nous ne le définissons pas, nous ne pouvons pas obtenir la sortie attendue.

String endpointURL = "https://svcs.sandbox.Paypal.com/AdaptiveAccounts/GetVerifiedStatus";

utiliser la méthode ci-dessous pour ajouter un point de terminaison

private static void addEndPoint(AdaptiveAccountsPortType port,
            String endpointURL) {
        BindingProvider bp = (BindingProvider)port;
        bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);

        /*List hchain = bp.getBinding().getHandlerChain();
        if (hchain == null) {
          hchain = new ArrayList();
        }
        hchain.add(new HTTPUserAgentHandler());
        bp.getBinding().setHandlerChain(hchain);*/
    }
2
Anand saga

Je ne sais pas comment procéder si vous utilisez wsimport. J'ai eu le même problème, j'ai donc utilisé Intellij IDEA (version 9) pour créer le code client pour moi. Il a fourni un constructeur de point de terminaison de service qui prend l'url wsdl.

0