标签: java-ee-6

Java EE 6 CDI实现之间的差异

我查看了JBoss的JSR-299上下文和依赖注入的焊接参考实现,我想知道其他CDI实现如何相互比较.具体来说,我了解Weld,Resin CanDI(由Caucho)和Apache OpenWebBeans.

resin java-ee cdi java-ee-6 jboss-weld

12
推荐指数
2
解决办法
1万
查看次数

如何在Java EE 6中实现认证机制

我正在尝试学习Java EE 6,我只是想知道如何在Java EE 6中实现认证机制.

这是Java EE 6认证示例:

    public void login() {
    if (account.authenticate(name, password) == null) {
        message = "Invalid user name or password!";
    } else {
        message = " Login successful";
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        try {
            request.login(this.name, this.password);
            Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
            name = principal.getName();
        } catch (ServletException e) {
            // Handle unknown username/password in request.login().
            context.addMessage(null, new FacesMessage("Unknown login"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

  1. request.login函数如何检查名称和密码?它不知道用户实体?
  2. 如果不是正确的方法.如何实现标准认证机制

最后,谢谢你的建议,我需要一个非常好的教程或建议.

java security authentication java-ee java-ee-6

12
推荐指数
1
解决办法
8745
查看次数

区别Hibernate 3.5/JPA 2.0

到目前为止,我总是喜欢直接使用Hibernate而不是JPA 1.0,因为JPA缺少我需要的一些重要功能和Hibernate提供的:Criteria API,二级缓存,单向OneToMany和其他一些.

现在,随着JPA 2.0的出现以及JPA 1.0(http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F)中最初缺少的所有新功能,我想知道是否仍然需要直接使用Hibernate.

你怎么看?在Hibernate 3.5中我还没有用JPA 2.0做什么?

hibernate jpa eclipselink java-ee-6 jpa-2.0

12
推荐指数
2
解决办法
7151
查看次数

Java EE 6和替代品

我是一名Java SE开发人员,但我有丰富的Web背景(PHP,Perl/CGI等),现在我正在开始新项目.它将具有Web界面,意大利面条业务逻辑,关系数据库作为存储和与其他服​​务的连接.我是从零开始做的.

我的同事告诉我要使用弹簧,弹簧安全装置和支柱.我简要地看一下Java EE 6规范,发现它几乎涵盖了企业应用程序的所有方面.我问同事他们为什么需要spring和struts,但看起来他们只是因为熟悉它们并且不熟悉经典的Java EE 6堆栈而使用技术.

所以,我的问题是:Java EE 6有什么不好的地方?如果有JNDI查找,为什么我需要spring?为单元测试创​​建假的InitialContext需要一两天的时间.这就是全部:我坚持使用像春天这样的外部工具.如果Servlets规范中内置了安全性,为什么我需要spring-security?我可以使用web.xml将任何请求映射到任何servlet,不需要struts.xml.我可以使用servlet-filters而不是struts拦截器.有RMI,所以我不需要弹簧遥控器.等等..

如果有Java EE 6,为什么我要用所有那些花哨的东西来烦扰自己呢?

我真的很想找到Java EE 6还不够的情况.你有什么?

谢谢!

java spring struts java-ee-6

12
推荐指数
2
解决办法
1万
查看次数

EJB中的@Schedule方法在异常后没有执行

我在Java EE6 Singleton Session Bean中有一个方法,每隔30秒由一个@Schedule(...)计时器调用.这可以正常工作,直到在方法中抛出异常并捕获异常(异常是在try-catch块中抛出并捕获).异常发生后,计时器停止调用该方法.

无论是否发生异常,我如何强制计时器再次调用该方法?

最好的祝福,

基督教

ejb java-ee-6

12
推荐指数
2
解决办法
7952
查看次数

@PersistenceContext Spring和Java EE中的EntityManager线程安全性

EntityManager根据定义,它不是线程安全的.Servlets规范说,在非分布式环境中,如果没有实现SingleThreadModel,每个定义只有一个servlet实例.

因此,在Java EE中,当您EntityManager通过@PersistenceContextServlet的字段注入时- 它不是线程安全的:

public class MyServlet extends HttpServlet {

    // Not thread-safe, should be using EMF instead.
    @PersistenceContext
    private EntityManager em;
}
Run Code Online (Sandbox Code Playgroud)
  1. 这是正确的说,即使Spring bean的默认范围是单例,它EntityManager是线程安全的,因为Spring ThreadLocal用来绑定它的事务和EntityManager它?

  2. 上面的Servlets示例在Spring中仍然有效吗?它仍然不是线程安全的吗?

  3. ThreadLocal方法是否仅适用于Spring托管bean,而普通servlet不是其中之一?

  4. 据我所知,注入的是容器的责任EntityManager.在Glassfish Java EE实现中,应用程序服务器发现了@PersistenceContextas注入点.
    它在Spring中看起来如何?Spring Framework是否负责发现这些注释或JPA实现者的责任?

spring thread-safety entitymanager java-ee-6 jpa-2.0

12
推荐指数
1
解决办法
4103
查看次数

在JSF托管bean中初始化List

我有一个关于POJO中List的初始化的问题,因为它遵循下一个代码:

public class Person {

 //other fields...
 private List<String> friends=new ArrayList<>();

     public List<String> getFriends() {
        return friends;
     }
     public void setFriends(List<String> friends) {
        this.friends = friends;
    }

}
Run Code Online (Sandbox Code Playgroud)

或者它是这样的更好,并在其他类中具有初始化(例如Bean(JSF))

public class Person {

 //other fields...
 private List<String> friends;

     public List<String> getFriends() {
        return friends;
     }
     public void setFriends(List<String> friends) {
        this.friends = friends;
    }

}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是什么方法更好?

jsf arraylist java-ee-6 jsf-2

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

如何从Java EE 6中的JPA2 EntityManager获取DataSource或Connection

我有一个工作的应用程序,我使用Java EE 6与EclipseLink进行持久化和PostgreSQL数据库.

对于User-Registration,我想在PostgreSQL中将密码设置为:

... password = crypt('inputPassword',gen_salt('bf')) ...
Run Code Online (Sandbox Code Playgroud)

由于我不能使用DigestUtils,我必须手动将用户插入数据库.为了保持我的应用程序可配置,我不想用一个查询DataSource, InitialContextInstance.lookup(dataSource)而是以某种方式从EntityManager中提取它(或连接),如:

DataSource ds = entityManagerInstance.someFunctionThatReturnsADataSourceOrConnection();
Run Code Online (Sandbox Code Playgroud)

或者是否可以使用createNativeQuery或类似的东西与预备语句结合以防止注入?

java jpa jdbc java-ee-6

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

如何在Java EE中建模?

比方说,我决定使用Java EE堆栈来实现我的企业应用程序.

现在,对于域建模(或:用于设计MVC的M),我可以安全地假设和使用哪些API,哪些我应该远离......比如说,通过抽象层?

例如,

  1. 我应该继续使用Hibernate/JPA API调用我的模型吗?或者,我应该构建一个抽象...我自己的持久层,以避免对这两个特定的持久性API进行硬编码?为什么我这样问:几年前,这个Kodo API被Hibernate取代了.如果设计了一个持久层并对该层编码模型的其余部分(而不是通过调用特定的供应商API来乱丢模型),那么它将允许一个(相对)轻松地从Kodo切换到Hibernate到xyz.

  2. 是否建议在域模型中积极使用持久性供应商提供的*QL?我不知道由于大量使用类似HQL的语言而产生的任何现实问题(如性能,可伸缩性,可移植性等).为什么我这样问:我希望尽可能避免编写自定义代码,这可以通过比SQL更便携的查询语言来实现.

对不起,我是这个地区的新手.我在哪里可以找到关于此主题的更多信息?

modeling java-ee data-persistence java-ee-6

11
推荐指数
1
解决办法
2652
查看次数

JavaEE 6中的JAAS配置和LDAP登录模块

我在这里写一个问题,因为我自己几个月都找不到解决方案.我的情况:我有一个用java编写的客户端服务器应用程序,它使用Java2ee 6和EJB3.0.服务器端部署在glassfish 3.0上.我需要为应用程序开发/实现登录模块.必须使用ldap服务器进行身份验证,并在应用程序内部处理授权.因此,我想聘请JAAS技术来进行身份验证和授权.我这样做是为了例如像在这里.然后我按照本教程官方文档进行登录.我的问题是ldap登录不起作用.

我的代码:

    LoginContext lc = null;

    try {
        CallbackHandler handler = new CallbackHandler() {
            public void handle(Callback[] callbacks) throws UnsupportedCallbackException {
                for( int i = 0; i < callbacks.length; i++ ) {
                    if( callbacks[i] instanceof NameCallback ) {
                        // prompt the user for a username
                          NameCallback nc = (NameCallback)callbacks[i];
                          nc.setName("admin");
                          System.out.println("Login done.");
                    } else if( callbacks[i] instanceof PasswordCallback ) {
                        // prompt the user for sensitive information
                          PasswordCallback pc = (PasswordCallback)callbacks[i];
                          pc.setPassword("mypassword".toCharArray()); …
Run Code Online (Sandbox Code Playgroud)

java ldap jaas java-ee-6 glassfish-3

11
推荐指数
1
解决办法
1万
查看次数