### Question:
JaxWsHandler extends SoapClientHandler<BindingProvider> { @Override public RemoteCallReturn invokeSoapCall(SoapCall<BindingProvider> soapCall) { BindingProvider webService = soapCall.getSoapClient(); RemoteCallReturn.Builder builder = new RemoteCallReturn.Builder(); synchronized (webService) { Object result = null; try { result = invoke(soapCall); } catch (InvocationTargetException e) { builder.withException(e.getTargetException()); } catch (Exception e) { builder.withException(e); } finally { JaxWsSoapContextHandler contextHandler = getContextHandlerFromClient(webService); String url = getEndpointAddress(webService); builder.withRequestInfo(contextHandler.getLastRequestInfoBuilder().withUrl(url).build()); builder.withResponseInfo(contextHandler.getLastResponseInfoBuilder().build()); } return builder.withReturnValue(result).build(); } } @Inject protected  JaxWsHandler(Provider<JaxWsSoapContextHandler> contextHandlerProvider); @Override void setEndpointAddress(BindingProvider soapClient, String endpointAddress); @Override Object getHeader(BindingProvider soapClient, String headerName); @Override void clearHeaders(BindingProvider soapClient); @Override void setHeader(BindingProvider soapClient, String namespace, String headerName,
      Object headerValue); void setHeaderChildString(BindingProvider soapClient, final String headerName,
      String childNamespace, String childName, String childValue); @Override void putAllHttpHeaders(BindingProvider soapClient, Map<String, String> headersMap); @Override void setCompression(BindingProvider soapClient, boolean compress); @Override BindingProvider createSoapClient(SoapServiceDescriptor soapServiceDescriptor); @Override void setRequestTimeout(BindingProvider bindingProvider, int timeout); @Override RemoteCallReturn invokeSoapCall(SoapCall<BindingProvider> soapCall); @Override String getEndpointAddress(BindingProvider soapClient); @Override SOAPHeaderElement createSoapHeaderElement(QName qName);  }### Answer:
@Test public void testInvokeSoapCall() throws SecurityException, NoSuchMethodException { CampaignServiceInterface soapClient = new CampaignServiceInterfaceImpl(); Method soapCallMethod = CampaignServiceInterface.class.getMethod( "getTestMessage", new Class<?>[0]); SoapCall<BindingProvider> soapCall = new SoapCall<BindingProvider>( soapCallMethod, soapClient, new Object[0]); RemoteCallReturn returnedValue = jaxWsHandler.invokeSoapCall(soapCall); assertEquals("Here!", returnedValue.getReturnValue()); assertEquals(null, returnedValue.getException()); assertEquals(CampaignServiceInterfaceImpl.endpointAddress, returnedValue.getRequestInfo().getUrl()); }