标签: cdi

我可以使用带有CDI的EJB无状态Bean来维护用户会话吗?

基于这篇文章http://www.adam-bien.com/roller/abien/entry/ejb_3_1_killed_the我在我的应用程序@Named @Stateless bean中使用与数据库进行通信(在此处注入EntityManager)并在jsf页面上显示信息.自Java EE 5以来,这是很好的促进,但我有一个问题.

使用这样的bean来维护用户会话(购物车等)是否安全?我读了一本关于ejb 3.0的书,我知道同样的无状态bean可以用于许多客户端.

使用具有所有ejb功能(事务,线程安全等)的托管bean的最佳方法是什么?我的意思是除了托管bean + ejb接口以及Java EE 5中的实现+ ejb注入之外的任何其他方式?

我使用GlassFish 3.1 WebProfile

java cdi java-ee-6 jsf-2 ejb-3.1

3
推荐指数
2
解决办法
4552
查看次数

JSF不会使用提交的输入值填充@Named @RequestScoped bean

这是我在这个美丽网站的第一个问题.我google了很多,但我没有找到任何解决方案.

我是JSF的新手,我正在通过Kent Ka lok Tong的"JSF 2 API和JBoss Seam"学习它.

现在我有一个简单的登录实现的问题.我有一个登录页面:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Login</title>
    </h:head>
    <h:body>
        <h1>Login</h1>
        <h:messages for="loginForm" />
        <h:form id="loginForm">
            <h:inputText id="username" value="#{loginRequest.username}" required="true" />
            <h:inputSecret id="password" value="#{loginRequest.password}" required="true" />
            <h:commandButton value="Login" action="#{loginRequest.doLogin}"></h:commandButton>
        </h:form>

    </h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

和一个支持bean:

package app.controller;

import app.model.beans.User;
import javax.faces.bean.RequestScoped;
import javax.inject.Named;


@Named("loginRequest")
@RequestScoped
public class LoginRequest {

    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

jsf cdi jsf-2 managed-bean

3
推荐指数
1
解决办法
4603
查看次数

在JSF,Weld或Solder中使用CDI

嗯我从一个jsf webapplication开始,将使用CDI,但在焊接和焊接之间有点混淆,或者是焊料使用焊接引擎盖下的焊接.

Weld之前还被称为WebBeans吗?

与Apache MyFaces一样,它清楚CDI实现是CODI

seam cdi jboss-weld deltaspike

3
推荐指数
1
解决办法
1174
查看次数

如何获取j_security_check的用户名作为bean属性

在我的托管bean中,我希望将j_security_check用户名作为bean属性获取,该用户名将作为LDAP服务器进行身份验证.

基本上,我想从中提取用户名

<input type="text" name="j_username" />
Run Code Online (Sandbox Code Playgroud)

一旦它被提交并且所有authed并在下面使用它:

@Override
public String getName() {
    return getId();
}
Run Code Online (Sandbox Code Playgroud)

我该怎么用

FacesContext.getExternalContext().getUserPrincipal();
Run Code Online (Sandbox Code Playgroud)

获取用户名作为bean属性?

如果您需要知道正在做什么,这是完整的支持bean.我曾经手动让用户在文本框中输入用户名,我现在要停止这个并让它自动拉出用户名.

//@Named("user")
@SessionScoped
public class UserBean implements Serializable, Principal {

    private static final long serialVersionUID = 1L;
    @NotNull(message = "The username can not be blank")
    @Size(min = 6, max = 12, message = "Please enter a valid username (6-12 characters)")
//@Pattern(regexp = "[a-zA-Z0-9_]", message = "Please enter a valid username consiting of only characters that are from the alphabet or …
Run Code Online (Sandbox Code Playgroud)

jsf username j-security-check cdi

3
推荐指数
1
解决办法
3440
查看次数

CDI和汇集

是否CDI允许以某种方式汇集?因为我认为这是EJBbean的一个特性,但是Adam Bien在这个截屏视频中说容器选择是通过反射创建新的类实例还是使用现有的实例.所以,如果我有这两个bean

@RequestScoped
public class RequestBean {

    public void doIt() {

    }
}

@SessionScoped
public class SessionBean {

    @Inject
    private RequestBean bean;    

    public void doSomething() {
        bean.doIt();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是 - 是否总是RequestBean在调用时创建新实例doSomething或者CDI容器以某种方式管理池中的实例?

java pool cdi

3
推荐指数
1
解决办法
1767
查看次数

使用@Produce方法的正确方法

我正在尝试将CDI(weld-se 2)和JavaFX结合起来,我想用自定义创建的注释来注释我的控制器类,因此使用我的工厂方法来管理这个类创建.我想这应该如下所示,但这段代码不起作用.你能告诉我应该改变什么吗?

注解:

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE })
@Qualifier
public @interface FXMLManaged {
}
Run Code Online (Sandbox Code Playgroud)

工厂类:

public class FXMLManagedProducer {
    @Produces @FXMLManaged
    public <T> T getFXMLManagedInstance(Class<T> type) {
        return type.newInstance();
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器类:

@FXMLManaged
public class NewsListView {
}
Run Code Online (Sandbox Code Playgroud)

java cdi jboss-weld javafx-2

3
推荐指数
1
解决办法
601
查看次数

org.omnifaces.VetoAnnotatedTypeExtension.processAnnotatedType(@Observes ProcessAnnotatedType)接收所有带注释类型的事件

启动Wildfly时,我收到以下警告:

WELD-000411:Observer方法[BackedAnnotatedMethod] public org.omnifaces.VetoAnnotatedTypeExtension.processAnnotatedType(@Observes ProcessAnnotatedType)接收所有带注释类型的事件.考虑使用@WithAnnotations限制事件或使用带边界的泛型类型.

知道可能导致这种情况的原因吗?这是启动日志:

F:\wildfly-8.1.0.CR2\bin\standalone.bat
[2014-05-30 08:31:55,733] Artifact Enterp:war exploded: Server is not connected. Deploy is not available.
Detected server admin port: 9990
Detected server http port: 8080
Calling "F:\wildfly-8.1.0.CR2\bin\standalone.conf.bat"
"JAVA_OPTS already set in environment; overriding default settings with values: -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:50542,suspend=y,server=n "
Setting JAVA property to "F:\Java\jdk1.8.0_05\bin\java"
===============================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: "F:\wildfly-8.1.0.CR2"

  JAVA: "F:\Java\jdk1.8.0_05\bin\java"

  JAVA_OPTS: "-Dprogram.name=standalone.bat -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:50542,suspend=y,server=n "

===============================================================================

Connected to the target VM, address: '127.0.0.1:50542', transport: 'socket'
20:31:56,715 INFO  [org.jboss.modules] (main) JBoss Modules version …
Run Code Online (Sandbox Code Playgroud)

jsf cdi omnifaces wildfly

3
推荐指数
1
解决办法
2014
查看次数

具有钝化能力的bean必须满足具有钝化能力的依赖性

我对OmniFaces的Viewscoped有点小问题.即使我的Managedbean实现Serializable,我收到以下错误:

具有钝化能力的bean必须满足具有钝化能力的依赖性.

通过一些研究,我找到了一些关于这个问题的答案但没有成功.我解决了我的问题,序列化了我正在用CDI注入的其他类.

我的其他类是否真的有必要在我的Managedbean中实现Serializable注入?

环境 - WebSphere Application Server 8.5.5.2 - Apache MyFaces 2.0.2 - OmniFaces 1.7 - PrimeFaces 5.0

我的课:

public class AgrupamentoAcoRN{

@Inject
public TbSiglaAcoAgrupadaDAO dao;

public void insereDados(TbSiglaAcoAgrupada tbSiglaAcoAgrupada) throws BancoDeDadosException{
    dao.insereRegistro(tbSiglaAcoAgrupada);
}
}
Run Code Online (Sandbox Code Playgroud)

我的豆子:

@Named("agrupamentoAcoMb")
@ViewScoped
public class AgrupamentoAcoMB implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Inject
private AgrupamentoAcoRN rn;
}
Run Code Online (Sandbox Code Playgroud)

jsf serializable cdi omnifaces view-scope

3
推荐指数
1
解决办法
1340
查看次数

使用CDI记录最佳方法

使用JEE 7创建新版本的RESTful服务架构,部署到Wildfly 9实例,我想知道是否有一种创建日志系统的聪明方法,你能建议一些模式吗?非常感谢.

logging design-patterns java-ee cdi

3
推荐指数
1
解决办法
2193
查看次数

org.jboss.weld.exceptions.DeploymentException:WELD-001409:带有限定符的类型Bean的不明确依赖关系@Default

我的项目昨天工作正常.我唯一做的就是将结构从单个战争改为多个模块.如果我理解正确的堆栈跟踪,焊接和omnifaces websocket lib之间存在模糊性.但是,似乎没有对stacktrace上的任何方法进行任何调用.也许这是omnifaces的问题?我甚至不使用omnifaces websockets,我使用javax.websocket.不过我过去在这个项目中尝试过,我搜索了"org.omnifaces.cdi"并从子包中注释掉了一些东西,@Param但问题仍然存在.另外我不明白为什么模糊性似乎来自两个完全相同的类:

  • 具有限定符[@Any @Default]的Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager],
  • 具有限定符的托管Bean [class org.omnifaces.cdi.push.SocketSessionManager] [@Any @Default]
[2016-06-25 03:13:59,430] Artifact core:war: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"core-0.0.1-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"core-0.0.1-SNAPSHOT.war\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 4 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type SocketSessionManager with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions
  at org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions(SocketPushContextProducer.java:0)
  Possible dependencies: 
  - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default],
  - Managed Bean [class …
Run Code Online (Sandbox Code Playgroud)

jsf dependencies maven cdi omnifaces

3
推荐指数
2
解决办法
5739
查看次数