标签: java-ee-6

Java EE 6 @ javax.annotation.ManagedBean与@ javax.inject.Named vs. @ javax.faces.ManagedBean

我觉得Java EE 6规范有点乱.有几组注释.

我们有javax.ejb类似于@Stateful@Stateless创建EJB的注释.

还有一个@javax.annotation.ManagedBean用于创建托管bean.

javax.enterprise.context喜欢@SessionScoped和注释中有注释@RequestScoped.

更重要的是也有@ManagedBean@SessionScoped/ @RequestScoped在注释javax.faces.bean包.

为了使事件更复杂,有一个javax.inject@Named注释的包.

有人可以描述一下他们之间的关系吗?

我在哪里可以使用@EJB,@Inject@ManagedPropery注入其他豆类?

java java-ee cdi java-ee-6

107
推荐指数
3
解决办法
4万
查看次数

什么是javax.inject.Named注释应该用于?

我试图理解javax.inject包,我不清楚javax.inject.Named注释应该用于什么.Javadoc没有解释它背后的想法.

Javadoc位于http://download.oracle.com/javaee/6/api/javax/inject/Named.html

我使用Spring 3.0编写一些示例程序,通过@Named添加bean似乎将它添加到bean工厂但Javadoc描述很轻,我不知道这是标准行为还是Spring特定行为.

我的问题是:

  1. @Named和之间有什么区别@Qualifier
  2. 你应该如何告诉Runtime系统一个类应该可以在其他类中注入什么是注释?相当于@Component春天?

更新1有一个很好的解释,@Named@Qualifier在尼斯文章@Named@Qualifier http://java.dzone.com/articles/java-ee6-cdi-named-components感谢@xmedeko链接到它下面的评论.

java spring dependency-injection java-ee-6

106
推荐指数
4
解决办法
13万
查看次数

CDI和EJB如何比较?相互作用?

我很难理解两者如何相互作用以及它们之间的界限在哪里.它们是否重叠?他们之间有冗余吗?

我知道有两个注释都有关联,但我无法通过简短的描述找到两者的完整列表.不确定这是否有助于弄清楚它们之间的区别或重叠的位置.

真的只是困惑.我(我认为)合理地理解EJB,我想我很难理解CDI带来的确切内容以及它如何取代或增强EJB已经提供的内容.

java ejb cdi java-ee-6

103
推荐指数
2
解决办法
4万
查看次数

Java EE 6与Spring 3堆栈

我现在正在开始一个新项目.我必须选择技术.我需要一些简单的东西,所以没有EJB或Seam.另一方面,我需要JPA(Hibernate或替代)和JSF与IceFaces.

您是否认为在Tomcat上部署的Spring 3上的这样一个堆栈是一个不错的选择?或者Java EE 6 Web应用程序可能更好?我担心Java EE 6是一项新技术,尚未有详细记载.Tomcat似乎比Glassfish 3更容易维护.

你怎么看?你有经验吗?

java jsf spring java-ee java-ee-6

87
推荐指数
9
解决办法
4万
查看次数

CDI是Spring的一个很好的替代品吗?

我们计划从头开始编写Web应用程序,已经决定使用符合Java EE 6标准的最新版Glassfish,因此我们正在分析是否可以使用CDI而不是Spring.

我们可以说CDI可以替代Spring吗?

spring cdi java-ee-6

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

在哪里可以找到Java EE 6的所有参考实现的列表?

你知道是否有一个列表包含Java EE 6的每个组件的所有参考实现?即GlassFish是参考容器,Hibernate Validator用于验证等.

java java-ee java-ee-6

56
推荐指数
1
解决办法
8375
查看次数

使用枚举类型作为@ RolesAllowed-Annotation的值参数

我正在开发一个Java企业应用程序,目前正在使用Java EE安全性来限制特定用户对特定功能的访问.我配置了应用程序服务器和所有内容,现在我使用RolesAllowed-annotation来保护方法:

@Documented
@Retention (RUNTIME)
@Target({TYPE, METHOD})
public @interface RolesAllowed {
    String[] value();
}
Run Code Online (Sandbox Code Playgroud)

当我使用这样的注释时,它工作正常:

@RolesAllowed("STUDENT")
public void update(User p) { ... }
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的,因为我必须在这里使用String,重构变得困难,并且可能发生拼写错误.因此,我想使用Enum值作为此注释的参数,而不是使用String.Enum看起来像这样:

public enum RoleType {
    STUDENT("STUDENT"),
    TEACHER("TEACHER"),
    DEANERY("DEANERY");

    private final String label;

    private RoleType(String label) {
        this.label = label;
    }

    public String toString() {
        return this.label;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用Enum作为这样的参数:

@RolesAllowed(RoleType.DEANERY.name())
public void update(User p) { ... }
Run Code Online (Sandbox Code Playgroud)

但是后来我得到了以下编译器错误,虽然Enum.name只返回一个String(它总是不变的,不是吗?).

注释属性RolesAllowed.value的值必须是常量表达式`

我尝试的下一件事是在我的枚举中添加一个额外的最终字符串:

public enum RoleType {
    ...
    public static final String STUDENT_ROLE = STUDENT.toString();
    ...
}
Run Code Online (Sandbox Code Playgroud)

但这也不能作为参数,导致相同的编译器错误:

// The …
Run Code Online (Sandbox Code Playgroud)

java enums annotations java-ee java-ee-6

55
推荐指数
4
解决办法
3万
查看次数

Glassfish DeploymentException:链接安全策略时出错

我一直在尝试从Glassfish AdminConsole部署我的Web应用程序(战争),但我不断收到以下错误消息 -

Exception while loading the app : Error in linking security policy for MyApp-war -- Inconsistent Module State.
Run Code Online (Sandbox Code Playgroud)

但是当我从Netbeans那里部署它时,它没有任何问题.(在部署应用程序之前,我不知道Netbeans是否正在做一些我缺少的事情.)

我也尝试使用最新版本的Glassfish(即V3.1.1(版本12)),我可以在AdminConsole中部署相同的应用程序而不会出现任何问题.

我正在使用Glassfish 3.1(build 43)和Netbeans 7.0.

在使用此版本的Glassfish部署我的应用程序之前,是否有任何安全策略设置?

security deployment glassfish java-ee-6 netbeans7.0

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

JEE6上的独立和域之间有什么区别?

我正在开始使用JBoss进行开发,我将它作为独立使用.我在生产环境中读到JBoss应该作为一个域.

我搜索了一下,了解它之间有什么区别.但我没有发现任何文件得到很好的解释.

java jboss java-ee-6 jboss7.x

45
推荐指数
3
解决办法
4万
查看次数

使用JUnit测试EJB

我应该如何测试获取EntityManager实例的EJB 3.1?

一个可能的EJB:

@Stateless
@LocalBean
public class CommentService {

    @PersistenceContext
    private EntityManager em;

    public List<Comment> findAll() {
        TypedQuery<Comment> query = em.createNamedQuery(
            Comment.FIND_ALL, Comment.class
        );
        return query.getResultList();
    }

}
Run Code Online (Sandbox Code Playgroud)

可能的测试:

@Test
public void testFindAll() {
    List<Comment> all = service.findAll();
    Assert.assertEquals(8, all.size());
}
Run Code Online (Sandbox Code Playgroud)

我只使用GlassFish 3.1和Eclipse Indigo for Java EE Developers.我已经尝试过这样的事情:

@Before
public void setUp() throws Exception {
    ejbContainer = EJBContainer.createEJBContainer();
    service = (CommentService) ejbContainer.getContext()
        .lookup("java:global/classes/CommentService");
}
Run Code Online (Sandbox Code Playgroud)

但我得到的只是:

javax.ejb.EJBException:
No EJBContainer provider available: no provider names had been found.
Run Code Online (Sandbox Code Playgroud)

junit jpa java-ee java-ee-6

39
推荐指数
3
解决办法
6万
查看次数