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

📄 xfireservletchannel.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
package org.codehaus.xfire.transport.http;

import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.activation.DataHandler;
import javax.servlet.http.HttpServletResponse;

import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.XFireException;
import org.codehaus.xfire.XFireRuntimeException;
import org.codehaus.xfire.attachments.Attachments;
import org.codehaus.xfire.attachments.JavaMailAttachments;
import org.codehaus.xfire.attachments.SimpleAttachment;
import org.codehaus.xfire.exchange.AbstractMessage;
import org.codehaus.xfire.exchange.OutMessage;
import org.codehaus.xfire.soap.SoapConstants;
import org.codehaus.xfire.transport.Channel;
import org.codehaus.xfire.util.OutMessageDataSource;

/**
 * @author Dan Diephouse
 */
public class XFireServletChannel extends HttpChannel
{
    
    public XFireServletChannel(String uri, HttpTransport transport)
    {
        super(uri, transport);
    }

    public void send(MessageContext context, OutMessage message) throws XFireException
    {
        if (message.getUri().equals(Channel.BACKCHANNEL_URI))
        {
            HttpServletResponse response = XFireServletController.getResponse();
            
            if (response == null)
            {
                throw new XFireRuntimeException("No backchannel exists for message");
            }
            
            sendViaServlet(context, message, response);
        }
        else
        {
            sendViaClient(context, message);
        }
    }
    
    protected void sendViaServlet(MessageContext context, OutMessage message, HttpServletResponse response)
        throws XFireException
    {
        try
        {
            OutputStream out = null;
            
            boolean mtomEnabled = Boolean.valueOf((String) context.getContextualProperty(SoapConstants.MTOM_ENABLED)).booleanValue();
            Attachments atts = message.getAttachments();
            if (mtomEnabled || atts != null)
            {
                if (atts == null)
                {
                    atts = new JavaMailAttachments();
                    message.setAttachments(atts);
                }
                
                OutMessageDataSource source = new OutMessageDataSource(context, message);
                DataHandler soapHandler = new DataHandler(source);
                atts.setSoapContentType(HttpChannel.getSoapMimeType(message, false));
                atts.setSoapMessage(new SimpleAttachment(source.getName(), soapHandler));
    
                response.setContentType(atts.getContentType());
                
                out = new BufferedOutputStream(response.getOutputStream());
                atts.write(out);
                
                source.dispose();
            }
            else
            {
                response.setContentType(doGetSoapMimeType(message, true));
                
                out = new BufferedOutputStream(response.getOutputStream());
                message.setProperty(Channel.OUTPUTSTREAM, out);
                HttpChannel.writeWithoutAttachments(context, message, out);
            }
            
            out.close();
        }
        catch (IOException e)
        {
            throw new XFireException("Couldn't send message.", e);
        }
    }

    protected String doGetSoapMimeType(AbstractMessage msg, boolean includeEncoding)
    {
        return HttpChannel.getSoapMimeType(msg, includeEncoding);
    }
}

⌨️ 快捷键说明

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