⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jaxwsservicefactory.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
package org.codehaus.xfire.jaxws;import java.lang.annotation.Annotation;import java.lang.reflect.Method;import javax.jws.WebMethod;import javax.xml.namespace.QName;import javax.xml.ws.RequestWrapper;import javax.xml.ws.ResponseWrapper;import javax.xml.ws.WebFault;import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.aegis.AegisBindingProvider;import org.codehaus.xfire.annotations.AnnotationServiceFactory;import org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations;import org.codehaus.xfire.exchange.MessageSerializer;import org.codehaus.xfire.fault.FaultSender;import org.codehaus.xfire.handler.OutMessageSender;import org.codehaus.xfire.jaxb2.JaxbWSDLBuilderFactory;import org.codehaus.xfire.jaxws.handler.WebFaultHandler;import org.codehaus.xfire.jaxws.type.JAXWSTypeRegistry;import org.codehaus.xfire.service.FaultInfo;import org.codehaus.xfire.service.OperationInfo;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.ServiceInfo;import org.codehaus.xfire.service.binding.PostInvocationHandler;import org.codehaus.xfire.service.binding.ServiceInvocationHandler;import org.codehaus.xfire.soap.AbstractSoapBinding;import org.codehaus.xfire.transport.TransportManager;/** * Creates JAX-WS services from a service class. *  * @author Dan Diephouse */public class JAXWSServiceFactory    extends AnnotationServiceFactory{    public JAXWSServiceFactory()    {        this(XFireFactory.newInstance().getXFire().getTransportManager());    }        public JAXWSServiceFactory(TransportManager transportManager)    {        super(new Jsr181WebAnnotations(),               transportManager,               new AegisBindingProvider(new JAXWSTypeRegistry()));        setWsdlBuilderFactory(new JaxbWSDLBuilderFactory());    }        public String getOperationName(ServiceInfo service, Method method)    {        Annotation[] annotations = method.getAnnotations();        for (int i = 0; i < annotations.length; i++)        {            if (annotations[i] instanceof WebMethod)            {                if (((WebMethod) annotations[i]).operationName() != null)                {                    String name = ((WebMethod) annotations[i]).operationName();                     if (name != null && name.length() > 0)                    {                        return name;                    }                }            }        }        return super.getOperationName(service, method);    }            protected void registerHandlers(Service service)    {        service.addInHandler(new ServiceInvocationHandler());        service.addInHandler(new PostInvocationHandler());        service.addOutHandler(new OutMessageSender());        service.addFaultHandler(new FaultSender());        service.addFaultHandler(new WebFaultHandler());    }    @Override    protected OperationInfo addOperation(Service endpoint, Method method, String style)    {        OperationInfo op = super.addOperation(endpoint, method, style);                return op;    }    @Override    protected FaultInfo addFault(Service service, OperationInfo op, Class exClazz)    {        FaultInfo info = super.addFault(service, op, exClazz);                return info;    }    @SuppressWarnings("unchecked")    @Override    protected boolean isFaultInfoClass(Class exClass)     {        return exClass.isAnnotationPresent(WebFault.class);    }    @SuppressWarnings("unchecked")    @Override    protected QName getFaultName(Service service, OperationInfo o, Class exClass, Class beanClass)    {        WebFault webFault = (WebFault) exClass.getAnnotation(WebFault.class);                if (webFault == null || webFault.name().equals(""))            return super.getFaultName(service, o, exClass, beanClass);        String ns = webFault.targetNamespace();        if (ns == null) ns = service.getTargetNamespace();                return new QName(ns, webFault.name());    }    protected MessageSerializer getSerializer(AbstractSoapBinding binding)    {       return new JAXWSBinding(super.getSerializer(binding));    }    @Override    public void createBindingOperation(Service service, AbstractSoapBinding binding, OperationInfo op)    {        super.createBindingOperation(service, binding, op);        binding.setSerializer(op, new JAXWSOperationBinding(op, super.getSerializer(binding)));    }    @Override    protected QName createInputMessageName(OperationInfo op)    {        if (op.getMethod().isAnnotationPresent(RequestWrapper.class))        {            RequestWrapper wrapper = op.getMethod().getAnnotation(RequestWrapper.class);                        String ns = wrapper.targetNamespace();            if (ns.length() == 0) ns = op.getService().getPortType().getNamespaceURI();            String name = wrapper.localName();            if (name.length() == 0) name = op.getName();                        return new QName(ns, name);        }                return super.createInputMessageName(op);    }    @Override    protected QName createOutputMessageName(OperationInfo op)    {        if (op.getMethod().isAnnotationPresent(ResponseWrapper.class))        {            ResponseWrapper wrapper = op.getMethod().getAnnotation(ResponseWrapper.class);                        String ns = wrapper.targetNamespace();            if (ns.length() == 0) ns = op.getService().getPortType().getNamespaceURI();            String name = wrapper.localName();            if (name.length() == 0) name = op.getName();                        return new QName(ns, name);        }                return super.createOutputMessageName(op);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -