diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java')
-rw-r--r-- | sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java index 920b9c43fc..fd53de6a2c 100644 --- a/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java +++ b/sca-java-2.x/trunk/modules/binding-ws-runtime-jaxws/src/main/java/org/apache/tuscany/sca/binding/ws/jaxws/JAXWSBindingInvoker.java @@ -39,6 +39,7 @@ import javax.xml.ws.Dispatch; import javax.xml.ws.Service; import javax.xml.ws.WebServiceException; import javax.xml.ws.WebServiceFeature; +import javax.xml.ws.soap.SOAPBinding; import javax.xml.ws.soap.SOAPFaultException; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; @@ -78,20 +79,36 @@ public class JAXWSBindingInvoker implements Invoker, DataExchangeSemantics { } private Dispatch<SOAPMessage> createDispatch(WebServiceBinding wsBinding) { - // FIXME: What should we do if the WSDL is generated in memory? URL wsdlLocation = null; try { wsdlLocation = new URL(wsBinding.getWSDLDocument().getDocumentBaseURI()); } catch (MalformedURLException e) { try { - wsdlLocation = wsBinding.getWSDLDefinition().getLocation().toURL(); + if (wsBinding.getWSDLDefinition().getLocation() != null){ + wsdlLocation = wsBinding.getWSDLDefinition().getLocation().toURL(); + } } catch (MalformedURLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } - Service service = Service.create(wsdlLocation, wsBinding.getServiceName()); - return service.createDispatch(new QName(wsBinding.getServiceName().getNamespaceURI(), wsBinding.getPortName()), + + QName serviceName = null; + QName portName = null; + Service service = null; + + if (wsdlLocation != null){ + serviceName = wsBinding.getServiceName(); + portName = new QName(serviceName.getNamespaceURI(), wsBinding.getPortName()); + service = Service.create(wsdlLocation, serviceName); + } else { + serviceName = wsBinding.getService().getQName(); + portName = new QName(serviceName.getNamespaceURI(), wsBinding.getPort().getName()); + service = Service.create(serviceName); + service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, wsBinding.getURI()); + } + + return service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE); } |