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