标签: java-ee-6

使用EJB,JSF和JAX-RS的企业应用程序

使用EJB和JAX-RS在java中使用企业应用程序时最好的Maven原型是什么,考虑到在不久的将来我将不得不使用JAX-RS作为后端EJB使用JSF2中的前端?

maven-2 ejb jax-rs java-ee-6 jsf-2

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

Spring 3,Java EE 6

我正在学习Java EE 6.我已经看到它在这个版本的伞规范中取得了多大进展.EJB 3.1比以前的版本更容易,更轻量级,CDI非常棒.

我不熟悉Spring,但我经常读到它提供了一些Java EE堆栈没有的简洁功能.然而,我现在也读到Java EE已经赶上了,现在可以完全与Spring竞争.

我知道从两者中选择取决于很多因素,但如果我们只专注于功能,说最新的趋势等等哪一个具有领先优势?Spring 3可以提供一些资产Java EE 6堆栈不能吗?

那么,Seam框架呢?从我读到的它就像Java EE 6,但有一些补充?

comparison spring java-ee-6 spring-3

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

需要查询以检查数据库中是否已存在电子邮件(Java Persistence API)

我试图弄清楚这个方法的问题是什么,它使用JPQL来验证数据库中是否已存在电子邮件,由于某种原因它不起作用.有人可以看看吗?或者给另一个替代查询更简单?

@Override
public boolean emailAlreadyExists(String value) {
    Query checkEmailExists = em.createQuery("SELECT COUNT(b.email) FROM "
            + Buyer.class.getName() + " b WHERE email = :emailparam");
    checkEmailExists.setParameter("emailparam", value);
    long matchCounter = 0;
    matchCounter = (Long) checkEmailExists.getSingleResult();
    if (matchCounter > 0) {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这是控制台输出的一部分:

引发者:异常[EclipseLink-8024](Eclipse Persistence Services - 2.0.1.v20100213-r6600):org.eclipse.persistence.exceptions.JPQLException异常描述:解析查询时出现语法错误[SELECT COUNT(b.email)FROM entities .Buyer b WHERE b.email =:emailparam],第1行,第35列:[.]处的语法错误.内部异常:MismatchedTokenException(83!= 78)

我确定它必须对语法做些什么.但是我犯了错误?

java jpa jpql java-ee java-ee-6

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

如何限制未登录用户访问某些页面?(JSF 2.0)

我正在实现自己的身份验证机制,我想知道我在做什么是正确的,如果不是我怎么能正确地做到这一点.

首先解释我的身份验证机制如何工作:

- 我的用户的详细信息位于名为Role的对象中.该对象包含3个字段:

电子邮件:String

密码:String

用户类型:Enum

- 当用户访问系统时,对象Role将保存到会话中.

我的问题是:如何根据userType字段限制对用户(角色)访问某些页面?

这是我做但不起作用.

首先我有一个托管bean来检查usser是否被记录.

@ManagedBean
@RequestScoped
public class SecurityController {

    //Some attributes...


    public String redirectNotBuyer() {
        Role role = (Role) FacesContext.getCurrentInstance()
                .getExternalContext().getSessionMap().get("userRole");
        //Checks if user is logged
        if (role == null) {         
            // Please login
            //Add message to authentification
            return "login.xhtml";           
        } else if (role != null) {
            if (!role.getType().toString().equalsIgnoreCase("BUYER")) {
                // Buyer not authorized
                return "main.xhtml";
            }
        }       
        return null;
    }

    public String redirectNotSeller() {
        Role …
Run Code Online (Sandbox Code Playgroud)

java jsf java-ee java-ee-6 jsf-2

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

@Observes在sessionscoped bean中?

以下情况可能吗?

"SessionService"是一个无状态EJB,它触发一个事件"LoggedInEvent".调用具有观察LoggedInEvent的非静态方法的SessionScoped(Weld)bean"SessionBean",并为该特定用户初始化一些内容.

是否调用了"SessionBean"的正确实例?所有实例都被调用了?我在文档中找不到任何内容.

events cdi java-ee-6 observer-pattern

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

在JBoss/JAAS中使用HTTP Request.login

我已经成功设置了JBoss安全域,并且可以使用BASIC身份验证进行身份验证(如web.xml中所定义).这一切都运作良好.但我无法弄清楚如何使用http request.login方法.

以下安全域(来自jboss-web.xml)适用于BASIC身份验证:

<jboss-web>  
    <context-root>/myapp</context-root>  
    <security-domain>java:/jaas/myapp-realm</security-domain>  
</jboss-web> 
Run Code Online (Sandbox Code Playgroud)

但是当我使用request.login时如下:

public void login() {
    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
    try {
        request.login(username, password);
    }
    catch (ServletException ex) {
        java.util.logging.Logger.getLogger(UserLogin.class.getName()).log(Level.SEVERE, null, ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

javax.servlet.ServletException: Failed to authenticate a principal
Run Code Online (Sandbox Code Playgroud)

我知道用户名/密码很好(使用BASIC auth工作正常).我有TRACE级别登录,看起来甚至没有尝试进行身份验证.我错过了什么?

如果您需要有关我的setup/config的更多详细信息,请参阅http://java-web-development.blogspot.com/2011/07/jee-6-security-part-two-implementation.html.我正在使用JBoss 6.

java security jaas java-ee-6 jboss6.x

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

通过远程Java独立应用程序使用EJB 3.1 bean

我一直在尝试使用Java EE 6来创建基于Application Server的应用程序,该应用程序将从GWT Web应用程序接收Job对象,并且这些作业将从Java独立应用程序中提取.我一直以为EJB模型会为我提供简单的远程处理方式,因为我的客户端应用程序应该能够在不同的机器上运行.

我使用Glassfish 3.1和Netbeans 7.0.1作为我的IDE,我也使用eclipse Java EE来重现同样的问题.

我一直面临着下一个困难:

  • 要发现它并不容易InitialContext,是否是使用远程处理的唯一方法?我不应该使用某些配置文件从我的独立应用程序使用@EJB/ @Inject进行一些自动代码注入吗?
  • 我发现了一些如何(直接在文档中找不到)InitialContext我需要添加到我的库中的工作机制:gf-client-module.jarweld-osgi-bundle.jar
  • 我一直收到下一个错误:
Exception in thread "main" javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446343 No; nested exception is: 
    org.omg.CORBA.MARSHAL: FINE: IOP00810007: Underflow in BufferManagerReadStream after last fragment in message  vmcid: OMG  minor code: 7  completed: No
    at ContentCreator._JobDispatcherRemote_Wrapper.getSimpleJobForProcessing(ContentCreator/_JobDispatcherRemote_Wrapper.java)
    at javaapplication1.JavaApplication1.main(JavaApplication1.java:35)
Caused by: java.rmi.MarshalException: CORBA MARSHAL 1330446343 No; nested exception is: 
    org.omg.CORBA.MARSHAL: FINE: IOP00810007: Underflow in BufferManagerReadStream after last fragment in …
Run Code Online (Sandbox Code Playgroud)

corba rmi java-ee-6 glassfish-3 netbeans-7

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

JSF 2.0 - selectOneMenu在空时默认为0

对于我的项目,我想用h:selectOneMenu实现一个组合框.我读了很多关于如何正确处理selectOneMenu以及如何实现自定义转换器的帖子.组合框应存储来自不同数据库表(名为fk_ID)的ID(),其中约束已到位.到目前为止,一切似乎都按计划运作.现在我的问题:

列fk_ID是可选的,因此组合框中的第一个选项是f:selectItem,没有标记为"choose ..."的值.当我保存表单并更改值时,一切正常,除非我将其设置为"选择...".我得到的错误是约束完整性违规.

我也发现了问题:转换器按预期返回null,但bean接收Long 0.

XHTML:

<h:selectOneMenu value="#{userBean.selectedModel.fk_id}"
    id="combobox">
    <f:selectItem itemLabel="choose ..." />
    <f:selectItems
        value="#{userBean.items}"
        var="item"
        itemLabel="#{item.value}"
        itemValue="#{item.id}"
    />
    <f:converter converterId="userConverter" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

自定义转换器:

@FacesConverter(value = "userConverter")
public class UserConverter implements Converter {
    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
        if (arg2 != null && !arg2.equals("null"))
            return Long.valueOf(arg2);

        return null;
    }
    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        return String.valueOf(arg2);
    }
} …
Run Code Online (Sandbox Code Playgroud)

converter selectonemenu java-ee-6 jsf-2 drop-down-menu

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

没有Java EE 6的Hibernate

我有Websphere 7服务器,它不支持JPA 2.0.所以我无法在WAS 7 JPA 2.0应用程序上运行.

但我想知道Spring用户如何在Tomcat或Jetty上运行Hibernate?这个servlet-container也(如WAS 7)不支持Java EE 6.

所以这意味着我可以在WAS 7上运行Hibernate,结果与Tomcat或Jetty相同?.

如果是,使用app-servers进行JPA有什么好处?为什么所有开发人员都不使用servlet-containers而不是app-servers?

我也听说过"容器管理"的东西,它允许一些额外的特性和功能.所以这意味着许多开发人员(使用Spring on Jetty和Tomcat)没有获得使用app-servers的容器管理功能的好处?

PS我知道有关Feature PackJPA 2.0支持的WAS 7的可用补丁,但不是问题.

java websphere tomcat hibernate java-ee-6

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

java ee EJB中的服务层和dao层

问题:在Java EE和EJB的上下文中,任何人都可以显示具有两种不同方法的特定DAO类(或多个).和一个服务类在一个事务边界中调用这两个方法并回滚?

我有一个EJB,但我想将它用作服务层,就像在Spring @Transactional方法中一样.

1)这是个好主意吗?

2)如何在一个方法中的一个"事务"中进行多个dao方法调用?我想我必须在transaction.begin()和.上制定一些策略.COMIT()?任何人都可以展示代码示例吗?

一些主要优点是:

a-所有小的不可变DAO事务将在单个数据库连接中的"一次性"中提交(in single transactional boundries)

b-如果说我在服务器上有4个dao调用,而第三个调用失败,那么由于它的一个事务边界,我可以这样做roll backs.

c-我immutable DAO methodsre-usable在很多其他地方.

Java EE示例:

import com.....entities.Users;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

@Stateless
public class UsersBean {

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    public Users sayHello() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("CommunityPU");
        EntityManager em = emf.createEntityManager();
        Users user =  em.find(Users.class, 1);
        em.close();
        emf.close();
        return user;
    }

} …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc java-ee java-ee-6 java-ee-7

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