Tomcat-----CDI编程实例
来源:互联网 发布:天谕白色头发数据 编辑:程序博客网 时间:2024/06/06 15:38
这篇教程主要介绍如何在Tomcat中configure Contexts and Depedency Injection.
一、介绍
由于Tomcat并不是一个JavaEE服务器,所以为了使Tomcat获得对CDI的支持必须手动添加一些依赖类库。接下来主要是CDI开发的一些配置和一个简单的CDI实例。
二、开发环境
1.Ubuntu 12.04
2 JDK 1.7.0.09
3. Weld 1.1.10
4 Tomcat 7.0.35
三、配置
在Tomcat环境下开发CDI程序我们必须添加一些CDI实现的依赖类库,这篇教程中我们使用Weld。我们需要的maven依赖配置如下:
<dependencies> <dependency> <groupId>org.jboss.weld.servlet</groupId> <artifactId>weld-servlet</artifactId> <version>1.1.10.Final</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency></dependencies>
在web项目下的WEB-INF文件夹下创建一个空的beans.xml文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"></beans>
最后一步我们在web.xml中配置CDI listener:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Tomcat CDI example</display-name> <listener> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> </listener></web-app>
四、创建依赖注入的bean
接下来定义一个要被依赖注入到servlet的bean.
接口定义:
package com.byteslounge.cdi.bean;public interface Service { int doWork(int a, int b);}
实现类:
package com.byteslounge.cdi.bean;public class ServiceBean implements Service { @Override public int doWork(int a, int b) { return a + b; }}
注意:我们并没有在定义的ServiceBean上声明任何的scope,那意味着ServiceBean会以Dependent scope被创建.即这个ServiceBean会与他的目标类(ServiceBean被注入的类、组件)有同样的scope.
五、使用servlet进行简单的测试
定义一个servlet来注入我们定义的ServiceBean:
TestServlet.javapackage com.byteslounge.cdi.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.inject.Inject;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.byteslounge.cdi.bean.Service;@WebServlet(name = "testServlet", urlPatterns = {"/testcdi"})public class TestServlet extends HttpServlet { private static final long serialVersionUID = 2638127270022516617L; @Inject private Service service; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int a = 2; int b = 3; PrintWriter out = response.getWriter(); out.println("Hello World: " + service.doWork(a, b)); out.close(); }}
我们使用@Inject注解在service属性上注入我们的bean,表示当容器初始化的时候会自动寻找Service的实现———ServiceBean并将它注入到servlet中。
源代码下载:configuring-cdi-with-tomcat-example.zip
原文地址:http://www.byteslounge.com/tutorials/configuring-cdi-with-tomcat-example
0 0
- Tomcat-----CDI编程实例
- cdi
- tomcat下的struts2+CDI(weld)+JPA配置
- tomcat下的struts2+CDI(openwebbeans)+JPA配置
- 基于组件的编程CDI技术(概述)
- CDI基本概念
- CDI是什么?
- tomcat 实例
- CDI技术第八步 动态CDI BEAN
- CDI进阶第一步 CDI拦截器
- CDI进阶第三步 CDI验证器
- CDI进阶第五步 CDI事件
- CDI进阶第六步 CDI装饰模式
- CDI应用一 CDI与JPA整合
- 从DI到CDI
- CDI初了解
- 【EJB】introduce of CDI
- Tomcat安全验证实例
- 程序小猿入职一年的内心独白
- C++进制转换
- C++静态库与动态库
- ROS 编写消息发布器(publisher)和订阅器(subscriber)-精简
- 安卓Apk多语言开发文件夹名字
- Tomcat-----CDI编程实例
- Maven项目中依据条件进行打包war包
- cocos2dx android VisibleSize 由来
- 2013.5.19 阿里巴巴实习生笔试
- 2015年,移动开发都有哪些热点?
- 散列算法之散列地址取值方法
- 死锁和优先级反转的区别与联系
- [leetcode]30 Remove Duplicates from Sorted List
- Android edittext 属性inputtype详解