cdi

Glassfish 4.1 CDI WELD-001409: Ambiguous dependencies

不打扰是莪最后的温柔 提交于 2020-07-07 12:58:28
问题 I'm working in a project deployed in Glassfish 4.1 . Dependency injection is made using CDI and I'm having an issue when trying to deploy the application. The error I'm getting is the following (usually I "translate" the name of my classes in the code so the whole post is in the same language, I`ll not do that now so I can copy/paste and avoid some translate typing mistakes): Server log org.glassfish.deployment.common.DeploymentException: CDI deployment failure:Exception List with 3

Problems with JSF 2.3, Weld CDI and Tomcat 9

旧街凉风 提交于 2020-05-17 13:16:42
问题 I have a maven project using JSF 2.3.9, Weld Servlet 3.1.1 and Tomcat 9. The project is configured as follows: pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>testmaven</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name

Problems with JSF 2.3, Weld CDI and Tomcat 9

三世轮回 提交于 2020-05-17 13:14:08
问题 I have a maven project using JSF 2.3.9, Weld Servlet 3.1.1 and Tomcat 9. The project is configured as follows: pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>testmaven</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name

CDI(Weld)高级<2> Interceptors(拦截器)

╄→尐↘猪︶ㄣ 提交于 2020-05-04 02:45:15
1.拦截器综述 拦截器的功能是定义在Java拦截器规范。 拦截器规范定义了三种拦截点: 业务方法拦截, 生命周期回调侦听, 超时拦截(EJB)方法。 在容器的生命周期中进行拦截 public class DependencyInjectionInterceptor { @PostConstruct public void injectDependencies(InvocationContext ctx) { ... } } EJB超时时使用的拦截器 public class TimeoutInterceptor { @AroundTimeout public Object manageTransaction(InvocationContext ctx) throws Exception { ... } } 在业务上,对某一个Bean的方法进行拦截 public class TransactionInterceptor { @AroundInvoke public Object manageTransaction(InvocationContext ctx) throws Exception { ... } } @AroundInvoke注释指定了要用作拦截器的方法,拦截器方法与被拦截的业务方法执行同一个java调用堆栈、同一个事务和安全上下文中。用

What's the default scope for a bean created by a @Produces method without a scope annotation?

荒凉一梦 提交于 2020-04-10 08:01:26
问题 I've got a method with a @Produces annotation that creates an Apple . When I use it with @ApplicationScoped like this public class AppleProducer { @ApplicationScoped @Produces public Apple createApple() { return new Apple(); } } then the Apple gets created only once for the whole application. When I use it with @RequestScoped like this public class AppleProducer { @RequestScoped @Produces public Apple createApple() { return new Apple(); } } then it gets created for every request. But what if

JEE6 CDI(Contexts and Dependency Injection)介绍

半世苍凉 提交于 2020-03-11 13:22:45
Java EE 6已经发布了很久,不过国内使用的人依旧很少,资料也很缺乏。我自己本人很看好JEE6,觉得 JSR299- Contexts and Dependency Injection 很好很强大。CDI 也就是上下文依赖注入,概念和 Spring 中的 依赖注入(DI) 一样。在JEE6中被作为一个规范后,我们使用起来就更加的方便实用了。 CDI最给力的一点就是提供了一个 Extension 接口, 允许我们对CDI进行扩展。我们可以通过实现这个接口来做实现很多非常酷的功能。包括对 Bean 的注入前后的拦截,Bean执行构造方法前后的拦截等等。通过这些我们就可以实现事务,日志等等一些功能。 目前实现 JSR-299 CDI 规范的框架有三个: JBoss Weld , Apache OpenWebBeans 和 Caucho CanDI 。 JSR-299 CDI 是 Gavin King 领导制定的,Weld 的实现也基本是由 JBoss的人员完成,所以JBoss社区比较活跃。 CDI 作为一个依赖注入的规范,它的主要的优点有下面几点: 类型安全:CDI不在通过字符串名称来注入对象,而是java类型来确定被注入的对象。当单单通过java类型还不能确定到底哪一个对象被注入的时候,你可以通过扩展 @ Qualifier 注解来限定你需要注入的对象 。 普通的Java Bean

JEE6 CDI 扩展实现 MVC (一)

自作多情 提交于 2020-03-11 13:16:19
就目前来说,CDI 基本还是和 JSF 结合使用的比较多,CDI 的扩展能力非常的出色,Seam3 就是完全基于 weld 的。当然我们也可以扩展 CDI 实现和 Spring MVC, .Net MVC 差不多的功能结合 JSP 一起使用。这里我是看到了老外的这篇 文章 ,然后对其已经实现的MVC功能做了一些扩展,添加了页面像 Controller 传值的功能,后面我还准备尝试添加表单实体的提交,还有 Controller 返回 JSon,Freemarker 等一些功能,这些功能都是借鉴于 RestEasy 。 对于MVC,我就不去介绍了,网上有很多。 添加 MVC 注解 JDK5 以后新增了自定义注解的功能,我们先为MVC添加好需要的一些注解,在 CDI 中的限定词都是通过扩展注解来做的。基本取消了配置文件用注解来代替,Spring 3 MVC 也是。下面是目前我们使用到的几个注解。 添加 @Controller 注解,这个注解表示这个类为 MVC 中的 Controller。 @Target({ ElementType.TYPE,ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Controller { } 添加 @RequestMapping 注解,它有两个参数

JEE6 CDI 扩展实现 MVC (三) 支持返回String,JSon,Freemarker

无人久伴 提交于 2020-03-11 13:15:19
前面我们实现了 MVC 的最基本的功能,视图跳转以及基本数据的传递。这部分我们对 Controller 的返回值进行扩展,支持返回 字符串, JSon 以及 对Freemarker模板引擎的支持。 添加注解 @ ResponseBody 当Controller的方法 ResponseBody 注解的时候说明放回的值既是为 String 的话,也不是跳转到View。它的 value 为 ResponseType 枚举,用来表示 Response 返回内容的类型。 @ResponseTemplate 表示Controller方法返回时调用模板引擎来返回静态页面。他的value的值为模板页面的路径,type值表示为哪一种模板引擎。 当然,为了方便处理,一个Controller 方法不能同时拥有 这两个注解。 @Target({ ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface ResponseBody { ResponseType value(); } @Qualifier @Target({ElementType.METHOD,ElementType.TYPE,ElementType.FIELD}) @Retention(RetentionPolicy

JBoss 系列七十二:jBPM 6 新功能/特性介绍(API 层面)

我们两清 提交于 2020-03-10 17:34:06
概述 jBPM 6.0 最终版已与上月底发布,与jBPM 5相比有很大变化,本文从API编程的角度去简单说说jBPM 6,本文涉及到内容包括: 2个重要的接口 运行状态管理 jBPM 服务注入 (CDI) 2个重要的接口 jBPM 6最主要的两个接口指的是KieSession (ProcessRuntime)和TaskService。 KieSession 是最常用与引擎交互的接口,一个KieSession允许应用与引擎建立一个iterative conversation,where the state of the session is kept across invocations. The reasoning process may be triggered multiple times for the same set of data. 当应用程序完成使用session,dispose()方法必须被调运,这样是为了free the resources and used memory。 使用KieSession执行企业规则文件的例子: KieServices kieServices = KieServices.Factory.get(); KieContainer kContainer = kieServices.getKieClasspathContainer();

How to serialize an injected bean?

╄→尐↘猪︶ㄣ 提交于 2020-02-25 23:35:12
问题 I would like to save the data of an injected stateful bean at various intervals: change - save - change- save... I'm using core serialization and the problem is that all the byte arrays are the same. i believe the proxy is serialized because if I deserialize one of the arrays later I get the current state of the bean. Example of serialization not capturing changes in the bean: @Stateful @RequestScoped public class State implements Serializable { private static final long serialVersionUID = 1L