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

📄 axismessagerequester.java

📁 提供ESB 应用mule源代码 提供ESB 应用mule源代码
💻 JAVA
字号:
/* * $Id: AxisMessageRequester.java 11079 2008-02-27 15:52:01Z tcarlson $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.transport.soap.axis;import org.mule.api.MuleMessage;import org.mule.api.config.MuleProperties;import org.mule.api.endpoint.EndpointURI;import org.mule.api.endpoint.ImmutableEndpoint;import org.mule.api.endpoint.InboundEndpoint;import org.mule.endpoint.MuleEndpointURI;import org.mule.transport.AbstractMessageRequester;import java.util.Iterator;import java.util.Properties;import javax.xml.soap.SOAPEnvelope;import org.apache.axis.AxisProperties;import org.apache.axis.EngineConfiguration;import org.apache.axis.Message;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.configuration.FileProvider;/** * <code>AxisMessageDispatcher</code> is used to make soap requests via the Axis * soap client. */public class AxisMessageRequester extends AbstractMessageRequester{    protected EngineConfiguration clientConfig;    protected AxisConnector connector;    protected Service service;    public AxisMessageRequester(InboundEndpoint endpoint)    {        super(endpoint);        this.connector = (AxisConnector)endpoint.getConnector();        AxisProperties.setProperty("axis.doAutoTypes", Boolean.toString(connector.isDoAutoTypes()));    }    protected void doConnect() throws Exception    {        if (service == null)        {            service = createService(endpoint);        }    }    protected void doDisconnect() throws Exception    {        if (service != null)        {            service = null;        }    }    protected void doDispose()    {        // template method    }    protected synchronized EngineConfiguration getClientConfig(ImmutableEndpoint endpoint)    {        if (clientConfig == null)        {            // Allow the client config to be set on the endpoint            String config;            config = (String)endpoint.getProperty(AxisConnector.AXIS_CLIENT_CONFIG_PROPERTY);            if (config != null)            {                clientConfig = new FileProvider(config);            }            else            {                clientConfig = connector.getClientProvider();            }        }        return clientConfig;    }    protected Service createService(ImmutableEndpoint endpoint) throws Exception    {        // Create a simple axis service without wsdl        EngineConfiguration config = getClientConfig(endpoint);        return new Service(config);    }    /**     * Make a specific request to the underlying transport     *     * @param timeout the maximum time the operation should block before returning.     *            The call should return immediately if there is data available. If     *            no data becomes available before the timeout elapses, null will be     *            returned     * @return the result of the request wrapped in a MuleMessage object. Null will be     *         returned if no data was avaialable     * @throws Exception if the call to the underlying protocal cuases an exception     */    protected MuleMessage doRequest(long timeout) throws Exception    {        Call call = new Call(service);        String uri = endpoint.getEndpointURI().toString();        call.setSOAPActionURI(uri);        call.setTargetEndpointAddress(uri);        Properties params = endpoint.getEndpointURI().getUserParams();        String method = (String)params.remove(MuleProperties.MULE_METHOD_PROPERTY);        call.setOperationName(method);        String args[] = new String[params.size()];        int i = 0;        for (Iterator iterator = params.values().iterator(); iterator.hasNext(); i++)        {            args[i] = iterator.next().toString();        }        call.setOperationName(method);        call.setProperty(MuleProperties.MULE_ENDPOINT_PROPERTY, endpoint);        Object result = call.invoke(method, args);        return AxisMessageDispatcher.createMessage(result, call);    }    public MuleMessage request(String endpoint, Object[] args) throws Exception    {        Call call = new Call(service);        call.setSOAPActionURI(endpoint);        call.setTargetEndpointAddress(endpoint);        if (!endpoint.startsWith("axis:"))        {            endpoint = "axis:" + endpoint;        }        EndpointURI ep = new MuleEndpointURI(endpoint);        String method = (String)ep.getParams().remove(MuleProperties.MULE_METHOD_PROPERTY);        call.setOperationName(method);        call.setOperationName(method);        Object result = call.invoke(method, args);        return AxisMessageDispatcher.createMessage(result, call);    }    public MuleMessage request(String endpoint, SOAPEnvelope envelope) throws Exception    {        Call call = new Call(service);        call.setSOAPActionURI(endpoint);        call.setTargetEndpointAddress(endpoint);        Object result = call.invoke(new Message(envelope));        return AxisMessageDispatcher.createMessage(result, call);    }}

⌨️ 快捷键说明

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