1 package demo.callback.server; 2 3 import java.net.URL ; 4 5 import javax.xml.namespace.QName ; 6 import javax.xml.ws.Service; 7 8 import org.objectweb.callback.CallbackPortType; 9 import org.objectweb.callback.ServerPortType; 10 import org.objectweb.celtix.Bus; 11 import org.objectweb.celtix.bus.wsdl.WSDLManagerImpl; 12 import org.objectweb.celtix.jaxb.JAXBUtils; 13 import org.objectweb.celtix.ws.addressing.EndpointReferenceType; 14 import org.objectweb.celtix.wsdl.EndpointReferenceUtils; 15 import org.objectweb.celtix.wsdl.WSDLManager; 16 17 18 19 @javax.jws.WebService(name = "ServerPortType ", serviceName = "SOAPService", 20 targetNamespace = "http://objectweb.org/callback", 21 wsdlLocation = "file:./wsdl/basic_callback.wsdl") 22 23 public class ServerImpl implements ServerPortType { 24 25 public String registerCallback(EndpointReferenceType callback) { 26 27 try { 28 Bus bus = Bus.init(); 29 WSDLManager manager = new WSDLManagerImpl(bus); 30 31 QName interfaceName = EndpointReferenceUtils.getInterfaceName(callback); 32 String wsdlLocation = EndpointReferenceUtils.getWSDLLocation(callback); 33 QName serviceName = EndpointReferenceUtils.getServiceName(callback); 34 String portString = EndpointReferenceUtils.getPortName(callback); 35 36 QName portName = new QName (serviceName.getNamespaceURI(), portString); 37 38 StringBuffer seiName = new StringBuffer (); 39 seiName.append(JAXBUtils.namespaceURIToPackage(interfaceName.getNamespaceURI())); 40 seiName.append("."); 41 seiName.append(JAXBUtils.nameToIdentifier(interfaceName.getLocalPart(), 42 JAXBUtils.IdentifierType.INTERFACE)); 43 44 Class <?> sei = null; 45 try { 46 sei = Class.forName(seiName.toString(), 47 true, manager.getClass().getClassLoader()); 48 } catch (ClassNotFoundException ex) { 49 ex.printStackTrace(); 50 } 51 52 URL wsdlURL = new URL (wsdlLocation); 53 54 Service service = Service.create(wsdlURL, serviceName); 55 CallbackPortType port = (CallbackPortType)service.getPort(portName, sei); 56 57 System.out.println("Invoking on callback object"); 58 String resp = port.serverSayHi(System.getProperty("user.name")); 59 System.out.println("Response from callback object: " + resp); 60 61 bus.shutdown(true); 62 63 } catch (Exception ex) { 64 ex.printStackTrace(); 65 return null; 66 } 67 68 return "registerCallback called"; 69 } 70 71 72 } 73 | Popular Tags |