`
longgangbai
  • 浏览: 7330617 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Mule ESB 学习笔记(8)mule和jersey的整合使用

阅读更多

            在项目常用jesery作为rest开发的框架,jesery简单快捷,易于扩展方便使用,在这里我们学习一下mule和jesery的整合使用.

1.简单的绑定一个资源请求路径:

        <service name="helloWorldResource">
            <inbound>
                <inbound-endpoint address="http://localhost:63081/" exchange-pattern="request-response"/>
            </inbound>
            <jersey:resources>
                <component class="org.mule.module.jersey.HelloWorldResource"/>
            </jersey:resources>
        </service>

 

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;

import com.easyway.esb.mule.jersey.exception.HelloWorldException;

/**
 * mule和jersey的整合使用
 * <p>功能描述,该部分必须以中文句号结尾。<p>
 *
 * 创建日期 2013-8-23<br>
 * @author  $Author$<br>
 * @version $Revision$ $Date$
 * @since   3.0.0
 */
@Path("/helloworld")
public class HelloWorldResource
{
    @POST
    @Produces("text/plain")
    public String sayHelloWorld()
    {
        return "Hello World";
    }

    @GET
    @Produces("application/json")
    @Path("/sayHelloWithJson/{name}")
    public HelloBean sayHelloWithJson(@PathParam("name") String name)
    {
        HelloBean hello = new HelloBean();
        hello.setMessage("Hello " + name);
        return hello;
    }

    @DELETE
    @Produces("text/plain")
    public String deleteHelloWorld()
    {
        return "Hello World Delete";
    }

    @GET
    @Produces("text/plain")
    @Path("/sayHelloWithUri/{name}")
    public String sayHelloWithUri(@PathParam("name") String name)
    {
        return "Hello " + name;
    }

    @GET
    @Produces("text/plain")
    @Path("/sayHelloWithHeader")
    public Response sayHelloWithHeader(@HeaderParam("X-Name") String name)
    {
        return Response.status(201).header("X-ResponseName", name).entity("Hello " + name).build();
    }

    @GET
    @Produces("text/plain")
    @Path("/sayHelloWithQuery")
    public String sayHelloWithQuery(@QueryParam("name") String name)
    {
        return "Hello " + name;
    }
    
    @GET
    @Produces("text/plain")
    @Path("/throwException")
    public String throwException() throws HelloWorldException
    {
        throw new HelloWorldException("This is an exception");
    }
}

 

2.多个资源的请求的并当使用:

    <flow name="helloWorldResource">

        <inbound-endpoint address="http://localhost:63081/" />

        <jersey:resources>
            <component class="org.mule.module.jersey.HelloWorldResource" />
            <component class="org.mule.module.jersey.AnotherWorldResource" />
        </jersey:resources>
    </flow>

 

 3.针对复杂数据类型的的解析处理

    <flow name="helloWorldResource">
        <inbound-endpoint address="http://localhost:63081/" exchange-pattern="request-response"/>
        <jersey:resources>
            <component class="com.easyway.esb.mule.jersey.HelloWorldResource"/>
            <jersey:context-resolver class="com.easyway.esb.mule.jersey.contextresolver.JaxbCustomContextResolver" />
        </jersey:resources>
    </flow>

 

import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;

import com.easyway.esb.mule.jersey.HelloBean;
import com.sun.jersey.api.json.JSONConfiguration;
import com.sun.jersey.api.json.JSONJAXBContext;

@Provider
public class JaxbCustomContextResolver implements ContextResolver<JAXBContext>
{
    protected JAXBContext context;

    @Override
    public JAXBContext getContext(Class<?> type)
    {
        if (type.equals(HelloBean.class))
        {
            if (context == null)
            {
                try
                {
                    context = new JSONJAXBContext(JSONConfiguration.natural().build(), type);
                }
                catch (JAXBException e)
                {
                    // do nothing
                }
            }
            return context;
        }
        return null;
    }
}

 4.针对REST异常的处理绑定使用

 <model name="BasicJerseyTest">
        <service name="helloWorldResource">
            <inbound>
                <inbound-endpoint address="http://localhost:63081/" exchange-pattern="request-response"/>
            </inbound>
            <jersey:resources>
                <component class="com.easyway.esb.mule.jersey.HelloWorldResource"/>
                <jersey:exception-mapper class="com.easyway.esb.mule.jersey.exception.HelloWorldExceptionMapper" />
            </jersey:resources>
        </service>
    </model>

 

分享到:
评论

相关推荐

    mule -esb 源码

    最后,`MULE_LICENSE.txt`是Mule ESB的许可协议文件,它详细阐述了软件的使用条款和条件,确保用户合法合规地使用Mule ESB。 综上所述,Mule ESB的源码包含了丰富的组件和配置,从日志记录到企业级服务,再到安全性...

    Mule ESB手册-中文版

    根据提供的文件内容,以下是关于Mule ESB手册-中文版的知识点: 1. Mule ESB简介 ...通过这些知识点的学习,可以加深对Mule ESB的使用方法的理解,并通过实例加深对ESB概念的理解,对新手来说非常有帮助。

    ESB原理及Mule ESB实践

    - 许多知名公司如沃尔玛、惠普、索尼、德意志银行和花旗银行都在使用MuleESB。 4. **Mule ESB的安装与配置** - MuleESB有两个版本:社区版和企业版。社区版免费,适合初学者和小型项目;企业版提供了更多高级...

    Mule ESB 学习笔记(13)CSV数据文件到数据库

    在本篇“Mule ESB 学习笔记(13)CSV数据文件到数据库”中,我们将探讨如何使用Mule ESB(Enterprise Service Bus,企业服务总线...通过实践和学习,我们可以更好地掌握Mule ESB在实际项目中的应用,提升我们的IT技能。

    MULE ESB-4.1企业版运行环境

    MULE ESB(Mule Enterprise Service Bus)是Anypoint Platform的核心组件,它是一个强大的、全面集成的企业服务总线(ESB),专为构建、部署和管理API和集成解决方案而设计。MULE ESB-4.1是MuleSoft公司推出的企业版...

    mule IDE (mule ESB)

    Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个... Mule ESB 包含如下强大的能力: 服务创建和托管— 暴露和托管可重用服务, 使用Mule ESB作为一个轻量级服务容器.

    MuleEsb开源框架简介.pdf

    Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、Web Services、JDBC、...

    MuleESB帮助文档

    五、学习和使用Mule ESB "MuleESB3"这个文件名可能指的是Mule ESB的第三个主要版本。在该版本中,用户可以期待更完善的特性和改进。对于初学者,建议首先通过官方文档了解Mule ESB的基本概念和工作原理,然后使用Any...

    MuleESB3.0中文教程

    - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise Integration Patterns)原则构建,支持多种传输协议(如file, FTP, ...

    MuleESB_3.0_中文教程

    3. **连接器使用**:学习如何配置和使用各种连接器,如文件、数据库和Web服务连接器。 4. **数据转换与映射**:通过实例讲解XML到JSON的转换,以及数据映射的原理和方法。 5. **错误处理与异常管理**:理解Mule ...

    mule esb开发手册

    《Mule ESB 开发手册》是一份详尽的指南,专为希望深入了解并掌握 Mule ESB(Enterprise Service Bus)技术的...通过深入学习和实践,开发者可以充分利用 Mule ESB 的强大功能,实现高效、可靠的企业级集成解决方案。

    mule esb cookbook 随书源码

    《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...

    mule esb 项目 例子 入门

    本教程将带您入门Mule ESB项目,通过实例学习其核心概念和操作。 首先,我们需要理解ESB的基本概念。ESB作为一个中间件,它的主要作用是提供一种松耦合的方式,使得各个系统之间可以通过标准接口进行通信,而不是...

    mule esb 的简单介绍

    8. **基于EIP(Enterprise Integration Patterns)的事件路由**:Mule ESB利用这些标准模式实现复杂的路由和转换策略,提高数据处理的智能化和自动化程度。 在Mule ESB中,连接器(Connectors)扮演着关键角色,...

    Mule ESB开发工具以及相匹配的英文手册和中文手册(翻译狗充值翻译)

    在学习和使用Mule ESB时,理解其基本概念和架构至关重要。`APDevFundamentals3.8_studentManual_20jun2016.pdf` 和 `APDevFundamentals3.8_studentManual_20jun2016【翻译狗www.fanyigou.com】.pdf` 这两个文件是...

    mule ESB 3 user guider

    同时,手册也强调了文档编写的重要性,以保证转换器的正确使用和维护。 11. 集成和提交Cloud Connector: 手册中还详细讲解了如何构建和测试Cloud Connector,并提供了将自己开发的连接器提交给MuleSoft的步骤。这...

    MULE ESB-4.1社区办运行环境

    MULE ESB-4.1社区版是Mulesoft为开发者提供的免费版本,它包含了基本的ESB功能,适合学习、开发和小规模项目部署。 在MULE ESB-4.1社区版中,主要包含以下几个关键组件和概念: 1. **AnyPoint Studio**: AnyPoint ...

    MuleESB学习笔记

    MuleESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。MuleESB支持集成现有系统而无论其底层采用何种技术,如JMS、WebServices、JDBC、HTTP以及其他...

Global site tag (gtag.js) - Google Analytics