Подтвердить что ты не робот

JAXWS - как изменить адрес конечной точки

Как я могу динамически изменять адрес, который использует мой клиент JAXWS? Этот клиент был создан с помощью wsimport.

4b9b3361

Ответ 1

Решена проблема с использованием Apache CXF.

Только с двумя строками кода! Вот фрагмент:

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);

Ответ 2

Вы можете добиться этого, используя интерфейс BindingProvider.

Пользовательская конечная точка 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 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();

Ответ 3

Я не уверен, как это сделать, если вы используете wsimport. У меня была такая же проблема, поэтому я использовал Intellij IDEA (версия 9) для создания кода клиента для меня. Он предоставил конструктор конечных точек службы, который принимает URL-адрес wsdl.

Ответ 4

Я новичок в интеграции PayPal, я не уверен в Adaptive Payment api. Но у нас есть привилегия проверять, имеет ли конкретный идентификатор электронной почты учетную запись в PayPal или не использует метод GetVerifiedStatus.

Пожалуйста, используйте ниже URL-адрес песочницы wsdl для проверки электронной почты

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

Ответ будет как ниже

<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>

Примечание: при создании заглушки не забудьте установить конечную точку, как показано ниже. если мы не устанавливаем это, мы не сможем получить ожидаемый результат.

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

используйте метод ниже для добавления конечной точки

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);*/
    }