package cn.edu.cust.client; import java.net.MalformedURLException; import java.util.Collection; import java.util.HashMap; import javax.xml.namespace.QName; import org.codehaus.xfire.XFireRuntimeException; import org.codehaus.xfire.aegis.AegisBindingProvider; import org.codehaus.xfire.annotations.AnnotationServiceFactory; import org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.jaxb2.JaxbTypeRegistry; import org.codehaus.xfire.service.Endpoint; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.soap.AbstractSoapBinding; import org.codehaus.xfire.transport.TransportManager; public class HelloWorldServiceClient { ??? private static XFireProxyFactory proxyFactory = new XFireProxyFactory(); ??? private HashMap endpoints = new HashMap(); ??? private Service service0; ??? public HelloWorldServiceClient() { ??????? create0(); ??????? Endpoint HelloWorldServiceHttpPortEP = service0 .addEndpoint(new QName("http://webservice.shirdrn.tk","HelloWorldServiceHttpPort"),new QName("http://webservice.shirdrn.tk","HelloWorldServiceHttpBinding"),"http://localhost:8080/HelloWorld/services/HelloWorldService"); ??????? endpoints.put(new QName("http://webservice.shirdrn.tk",HelloWorldServiceHttpPortEP); ??????? Endpoint HelloWorldServicePortTypeLocalEndpointEP = service0 .addEndpoint(new QName("http://webservice.shirdrn.tk","HelloWorldServicePortTypeLocalEndpoint"),"HelloWorldServicePortTypeLocalBinding"),"xfire.local://HelloWorldService"); ??????? endpoints.put(new QName("http://webservice.shirdrn.tk",HelloWorldServicePortTypeLocalEndpointEP); ??? } ??? public Object getEndpoint(Endpoint endpoint) { ??????? try { ??????????? return proxyFactory.create((endpoint).getBinding(),(endpoint).getUrl()); ??????? } catch (MalformedURLException e) { ??????????? throw new XFireRuntimeException("Invalid URL",e); ??????? } ??? } ??? public Object getEndpoint(QName name) { ??????? Endpoint endpoint = ((Endpoint) endpoints.get((name))); ??????? if ((endpoint) == null) { ??????????? throw new IllegalStateException("No such endpoint!"); ??????? } ??????? return getEndpoint((endpoint)); ??? } ??? public Collection getEndpoints() { ??????? return endpoints.values(); ??? } ??? private void create0() { ??????? TransportManager tm = (org.codehaus.xfire.XFireFactory.newInstance().getXFire().getTransportManager()); ??????? HashMap props = new HashMap(); ??????? props.put("annotations.allow.interface",true); ??????? AnnotationServiceFactory asf = new AnnotationServiceFactory(new Jsr181WebAnnotations(),tm,new AegisBindingProvider(new JaxbTypeRegistry())); ??????? asf.setBindingCreationEnabled(false); ??????? service0 = asf.create((cn.edu.cust.client.HelloWorldServicePortType.class),props); ??????? { ??????????? AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0,"http://schemas.xmlsoap.org/soap/http"); ??????? } ??????? { ??????????? AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0,"urn:xfire:transport:local"); ??????? } ??? } ??? public HelloWorldServicePortType getHelloWorldServiceHttpPort() { ??????? return ((HelloWorldServicePortType)(this).getEndpoint(new QName("http://webservice.shirdrn.tk","HelloWorldServiceHttpPort"))); ??? } ??? public HelloWorldServicePortType getHelloWorldServiceHttpPort(String url) { ??????? HelloWorldServicePortType var = getHelloWorldServiceHttpPort(); ??????? org.codehaus.xfire.client.Client.getInstance(var).setUrl(url); ??????? return var; ??? } ??? public HelloWorldServicePortType getHelloWorldServicePortTypeLocalEndpoint() { ??????? return ((HelloWorldServicePortType)(this).getEndpoint(new QName("http://webservice.shirdrn.tk","HelloWorldServicePortTypeLocalEndpoint"))); ??? } ??? public HelloWorldServicePortType getHelloWorldServicePortTypeLocalEndpoint(String url) { ??????? HelloWorldServicePortType var = getHelloWorldServicePortTypeLocalEndpoint(); ??????? org.codehaus.xfire.client.Client.getInstance(var).setUrl(url); ??????? return var; ??? } ??? public static void main(String[] args) { ??????? ??????? HelloWorldServiceClient client = new HelloWorldServiceClient(); ??????? ?? //create a default service endpoint ??????? HelloWorldServicePortType service = client.getHelloWorldServiceHttpPort(); ??????? ?? //TODO: Add custom client code here ??????? ?? // ??????? ?? //service.yourServiceOperationHere(); ??????? ?? System.out.println("test client completed"); ??????? ?? System.exit(0); ??? } } |