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

来源:互联网 发布:电脑编程入门视频教程 编辑:程序博客网 时间:2024/04/29 23:52

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

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

Xml代码  

1.      <service name="helloWorldResource">  

2.          <inbound>  

3.              <inbound-endpoint address="http://localhost:63081/" exchange-pattern="request-response"/>  

4.          </inbound>  

5.          <jersey:resources>  

6.              <component class="org.mule.module.jersey.HelloWorldResource"/>  

7.          </jersey:resources>  

8.      </service>  

 

Java代码  

1.      import javax.ws.rs.DELETE;  

2.      import javax.ws.rs.GET;  

3.      import javax.ws.rs.HeaderParam;  

4.      import javax.ws.rs.POST;  

5.      import javax.ws.rs.Path;  

6.      import javax.ws.rs.PathParam;  

7.      import javax.ws.rs.Produces;  

8.      import javax.ws.rs.QueryParam;  

9.      import javax.ws.rs.core.Response;  

10.    

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

12.    

13.  /** 

14.   * mulejersey的整合使用 

15.   * <p>功能描述,该部分必须以中文句号结尾。<p> 

16.   * 

17.   * 创建日期 2013-8-23<br> 

18.   * @author  $Author$<br> 

19.   * @version $Revision$ $Date$ 

20.   * @since   3.0.0 

21.   */  

22.  @Path("/helloworld")  

23.  public class HelloWorldResource  

24.  {  

25.      @POST  

26.      @Produces("text/plain")  

27.      public String sayHelloWorld()  

28.      {  

29.          return "Hello World";  

30.      }  

31.    

32.      @GET  

33.      @Produces("application/json")  

34.      @Path("/sayHelloWithJson/{name}")  

35.      public HelloBean sayHelloWithJson(@PathParam("name") String name)  

36.      {  

37.          HelloBean hello = new HelloBean();  

38.          hello.setMessage("Hello " + name);  

39.          return hello;  

40.      }  

41.    

42.      @DELETE  

43.      @Produces("text/plain")  

44.      public String deleteHelloWorld()  

45.      {  

46.          return "Hello World Delete";  

47.      }  

48.    

49.      @GET  

50.      @Produces("text/plain")  

51.      @Path("/sayHelloWithUri/{name}")  

52.      public String sayHelloWithUri(@PathParam("name") String name)  

53.      {  

54.          return "Hello " + name;  

55.      }  

56.    

57.      @GET  

58.      @Produces("text/plain")  

59.      @Path("/sayHelloWithHeader")  

60.      public Response sayHelloWithHeader(@HeaderParam("X-Name") String name)  

61.      {  

62.          return Response.status(201).header("X-ResponseName", name).entity("Hello " + name).build();  

63.      }  

64.    

65.      @GET  

66.      @Produces("text/plain")  

67.      @Path("/sayHelloWithQuery")  

68.      public String sayHelloWithQuery(@QueryParam("name") String name)  

69.      {  

70.          return "Hello " + name;  

71.      }  

72.        

73.      @GET  

74.      @Produces("text/plain")  

75.      @Path("/throwException")  

76.      public String throwException() throws HelloWorldException  

77.      {  

78.          throw new HelloWorldException("This is an exception");  

79.      }  

80.  }  

 

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

Xml代码  

1.      <flow name="helloWorldResource">  

2.        

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

4.        

5.          <jersey:resources>  

6.              <component class="org.mule.module.jersey.HelloWorldResource" />  

7.              <component class="org.mule.module.jersey.AnotherWorldResource" />  

8.          </jersey:resources>  

9.      </flow>  

 

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

Xml代码  

1.      <flow name="helloWorldResource">  

2.          <inbound-endpoint address="http://localhost:63081/" exchange-pattern="request-response"/>  

3.          <jersey:resources>  

4.              <component class="com.easyway.esb.mule.jersey.HelloWorldResource"/>  

5.              <jersey:context-resolver class="com.easyway.esb.mule.jersey.contextresolver.JaxbCustomContextResolver" />  

6.          </jersey:resources>  

7.      </flow>  

 

Java代码  

1.      import javax.ws.rs.ext.ContextResolver;  

2.      import javax.ws.rs.ext.Provider;  

3.      import javax.xml.bind.JAXBContext;  

4.      import javax.xml.bind.JAXBException;  

5.        

6.      import com.easyway.esb.mule.jersey.HelloBean;  

7.      import com.sun.jersey.api.json.JSONConfiguration;  

8.      import com.sun.jersey.api.json.JSONJAXBContext;  

9.        

10.  @Provider  

11.  public class JaxbCustomContextResolver implements ContextResolver<JAXBContext>  

12.  {  

13.      protected JAXBContext context;  

14.    

15.      @Override  

16.      public JAXBContext getContext(Class<?> type)  

17.      {  

18.          if (type.equals(HelloBean.class))  

19.          {  

20.              if (context == null)  

21.              {  

22.                  try  

23.                  {  

24.                      context = new JSONJAXBContext(JSONConfiguration.natural().build(), type);  

25.                  }  

26.                  catch (JAXBException e)  

27.                  {  

28.                      // do nothing  

29.                  }  

30.              }  

31.              return context;  

32.          }  

33.          return null;  

34.      }  

35.  }  

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

Xml代码  

1.      <model name="BasicJerseyTest">  

2.             <service name="helloWorldResource">  

3.                 <inbound>  

4.                     <inbound-endpoint address="http://localhost:63081/" exchange-pattern="request-response"/>  

5.                 </inbound>  

6.                 <jersey:resources>  

7.                     <component class="com.easyway.esb.mule.jersey.HelloWorldResource"/>  

8.                     <jersey:exception-mapper class="com.easyway.esb.mule.jersey.exception.HelloWorldExceptionMapper" />  

9.                 </jersey:resources>  

10.         </service>  

11.     </model>  

0 0
原创粉丝点击