axis2testbase.java

来自「bpel执行引擎用来执行bpel业务流程」· Java 代码 · 共 158 行

JAVA
158
字号
package org.apache.ode.axis2;import junit.framework.TestCase;import org.apache.axis2.AxisFault;import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;import org.apache.axis2.description.AxisService;import org.apache.axis2.description.AxisOperation;import org.apache.axis2.context.ConfigurationContextFactory;import org.apache.axis2.engine.AxisServer;import org.apache.axis2.engine.MessageReceiver;import org.apache.ode.tools.sendsoap.cline.HttpSoapSender;import org.apache.ode.axis2.util.Axis2UriResolver;import org.apache.ode.axis2.util.Axis2WSDLLocator;import org.apache.ode.axis2.hooks.ODEAxisService;import javax.servlet.ServletException;import javax.wsdl.WSDLException;import javax.xml.namespace.QName;import java.io.*;import java.net.URL;import java.net.URI;import java.net.URISyntaxException;import java.util.Iterator;import java.util.Collection;/** * @author Matthieu Riou <mriou@apache.org> */public abstract class Axis2TestBase extends TestCase {    protected ODEAxis2Server server;    public void startServer() throws Exception {        String webappPath = getClass().getClassLoader().getResource("webapp").getFile();        server = new ODEAxis2Server(webappPath);        server.start();    }    public void stopServer() throws AxisFault {        server.stop();    }    protected void setUp() throws Exception {        super.setUp();        startServer();    }    protected void tearDown() throws Exception {        stopServer();        super.tearDown();    }    protected class ODEAxis2Server extends AxisServer {        ODEServer _ode = new ODEServer();        String webappPath;        protected ODEAxis2Server (String webappPath) throws Exception {            super(false);            this.webappPath = webappPath;            String confLocation = webappPath + "/WEB-INF/conf/axis2.xml";            String repoLocation = webappPath + "/WEB-INF/processes";            configContext = ConfigurationContextFactory                    .createConfigurationContextFromFileSystem(repoLocation, confLocation);        }        protected void start() throws AxisFault {            super.start();            _ode = new ODEServer();            try {                _ode.init(webappPath+"/WEB-INF", configContext.getAxisConfiguration());            } catch (ServletException e) {                e.printStackTrace();            }        }        public void stop() throws AxisFault {            _ode.shutDown();            super.stop();        }        public Collection<QName> deployProcess(String bundleName) {            return _ode.getProcessStore().deploy(new File(getBundleDir(bundleName)));        }        public void undeployProcess(String bundleName) {            _ode.getProcessStore().undeploy(new File(getBundleDir(bundleName)));        }        public boolean isDeployed(String bundleName) {            return _ode.getProcessStore().getPackages().contains(bundleName);        }        /**         * Creates and deploys an Axis service based on a provided MessageReceiver. The receiver         * will be invoked for all invocations of that service.         */        protected void deployService(String bundleName, String defFile, QName serviceName, String port,                                     MessageReceiver receiver) throws WSDLException, IOException, URISyntaxException {            URI wsdlUri = new File(getBundleDir(bundleName) + "/" + defFile).toURI();            InputStream is = wsdlUri.toURL().openStream();            WSDL11ToAxisServiceBuilder serviceBuilder = new ODEAxisService.WSDL11ToAxisPatchedBuilder(is, serviceName, port);            serviceBuilder.setBaseUri(wsdlUri.toString());            serviceBuilder.setCustomResolver(new Axis2UriResolver());            serviceBuilder.setCustomWSLD4JResolver(new Axis2WSDLLocator(wsdlUri));            serviceBuilder.setServerSide(true);            AxisService axisService = serviceBuilder.populateService();            axisService.setName(serviceName.getLocalPart());            axisService.setWsdlFound(true);            axisService.setCustomWsdl(true);            axisService.setClassLoader(getConfigurationContext().getAxisConfiguration().getServiceClassLoader());            Iterator operations = axisService.getOperations();            while (operations.hasNext()) {                AxisOperation operation = (AxisOperation) operations.next();                if (operation.getMessageReceiver() == null) {                    operation.setMessageReceiver(receiver);                }            }            getConfigurationContext().getAxisConfiguration().addService(axisService);                    }        public String sendRequestFile(String endpoint, String bundleName, String filename) {            try {                return HttpSoapSender.doSend(new URL(endpoint),                        new FileInputStream(getBundleDir(bundleName)+"/" + filename), null, 0, null, null, null);            } catch (IOException e) {                throw new RuntimeException(e);            }        }        protected String getBundleDir(String bundleName) {            return getClass().getClassLoader().getResource(bundleName).getFile();        }        /**         * Convenient methods to generate a WSDL for an Axis2 service. Often nice, but also often         * generates crappy WSDL that aren't even valid (especially when faults are involved) so         * use with care.         * @param serviceName         * @param fileName         * @throws AxisFault         */        protected void generateWSDL(String serviceName, String fileName) throws AxisFault {            FileOutputStream fos = null;            try {                fos = new FileOutputStream(fileName);            } catch (FileNotFoundException e) {                e.printStackTrace();            }            configContext.getAxisConfiguration().getService(serviceName).printWSDL(fos);        }        public ODEServer getODEServer() {            return _ode;        }    }}

⌨️ 快捷键说明

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