Tag: ejb 3.0

如何在GlassFish 2上保护网络服务?

我们在GlassFish 2服务器上部署了一些不透明的EJB(EJB3),它们通过@Webmethod注释将它们的一些方法公开为webservices。 现在我们想要保护这些Web服务方法,以便只有经过身份validation的客户端才能调用它。 实现这一目标的好方法是什么?

注入静态EJB,废话?

我想写这段代码: @Stateless public class MyEjb { @EJB private static MyOtherEjbWhichIWantStatic myOtherEjb; } 我有意义的是,由于各种原因,我想在我的类中注入一个EJB,作为静态元素。 遗憾的是,Java对此并不满意 com.sun.enterprise.container.common.spi.util.InjectionException: Illegal use of static field private static MyOtherEjbWhichIWantStatic myOtherEjb on class that only supports instance-based injection 我不明白,为什么我不能将静态EJB注入另一个EJB?

JTA EntityManager无法使用getTransaction()

如何在我的非ejb应用程序中使用以下代码。 代码有效。 @Override public void saveItems(Collection items) { synchronized (em) { EntityTransaction tx = em.getTransaction(); try { tx.begin(); for (T item : items) { saveItem_((Class) null, item); } tx.commit(); } finally { if (tx.isActive()) { tx.rollback(); } } } } 在一个新的应用程序中,我正在使用EJB3 + JSF,并希望重用包含上述代码的库。 我对新应用程序的持久性单元如下所示: org.hibernate.ejb.HibernatePersistence MySQLConnection 我的新应用程序在遇到此行时抛出exception: EntityTransaction tx = em.getTransaction(); 例外是: A JTA EntityManager […]

EJB世界的新手…… EJB客户端中的空指针exception

我正在学习EJB,我正在尝试执行EJB In Action书中给出的Helloworld示例。 我的app服务器是JBoss,我在正确的目录中为bean类和接口创建了Jar文件(我可以在JMX控制台中看到EJB)。 现在我使用EJB注释创建了一个简单的客户端,但是我得到了一个N​​ullPointerException。 这是我的客户端代码。 客户代码: package com.client; import javax.ejb.EJB; import com.EJB.*; public class HelloWorldClient { @EJB private static HelloWorldInterface HelloBean; public static void main(String[] args) { HelloBean.SayHelloWorldInEJB(); } } Bean类 package com.EJB; import javax.ejb.Stateless; @Stateless public class HelloWorldBean implements HelloWorldInterface { public void SayHelloWorldInEJB() { // TODO Auto-generated method stub System.out.println(“Hello world from […]

优雅地处理EJB / JPA环境中的约束违规?

我在Glassfish v3应用服务器上使用EJB和JPA。 我有一个实体类,我强迫其中一个字段与@Column注释是唯一的。 @Entity public class MyEntity implements Serializable { private String uniqueName; public MyEntity() { } @Column(unique = true, nullable = false) public String getUniqueName() { return uniqueName; } public void setUniqueName(String uniqueName) { this.uniqueName = uniqueName; } } 当我尝试将此字段设置为非唯一值的对象持久化时,当EJB容器管理的事务提交时,我得到exception(如预期的那样)。 我有两个问题需要解决: 1)我得到的exception是无用的“javax.ejb.EJBException:Transaction aborted”。 如果我递归调用getCause()足够多次,我最终会得到更有用的“java.sql.SQLIntegrityConstraintViolationException”,但是这个exception是EclipseLink实现的一部分,我不太愿意依赖它的存在。 有没有更好的方法来获取JPA的详细错误信息? 2)EJB容器坚持记录此错误,即使我抓住它并处理它。 有没有更好的方法来处理这个错误,这将阻止Glassfish使用无用的exception信息混乱我的日志? 谢谢。

在Java EE6中在类级别声明@Resource和@EJB

是否有任何情况(鉴于Java EE6具有java:global /,app /,模块/命名标准),需要声明EJB或资源,如下例所示? @EJB (name = “ejb/PlaceBid”, beanInterface = PlaceBid.class) public class ActionBazaarBidControllerServlet extends HttpServlet { } 在ActionBazaarBidControllerServlet使用的辅助类中查找PlaceBid PlaceBid placeBid = (PlaceBid)context.lookup(“java:comp/env/ejb/PlaceBid”);

使用JPA EntityManager批量插入

有没有办法我们可以使用JPA EntityManager使用批量插入。 我知道没有直接的方法来实现这一目标,但必须有一些方法来实现这一机制。 实际上,对于每次插入操作,它需要300毫秒,我希望使用批量插入而不是单个插入来减少。 这是我目前正在为单个插入执行的代码 @PersistenceContext(unitName = “testing”) EntityManager eM; Query querys = this.eM.createNativeQuery(insertQuery); for (String s : someList) { //setting parameters querys.executeUpdate(); } 提前致谢。

在启动时(在JBoss上)急切/自动加载EJB / load EJB

EJB似乎被懒惰地加载 – 无论何时访问。 但是,我想急切地初始化它们 – 即每当容器启动时。 这是如何实现的(特别是在JBoss中) 这个主题提供了一些提示,但并不十分令人满意。

java.lang.IllegalStateException:具有@ManyToMany 3实体的同一实体的多个表示forms

我有3个具有ManyToMany关系的实体,如下所示: 角色实体: @Entity public class Role { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer roleID; private String roleName; private String description; @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.EAGER) @JoinTable(name = “role_permission”, joinColumns = {@JoinColumn(name = “role_id”)}, inverseJoinColumns = {@JoinColumn(name = “permission_id”)}) private Set permissions = new LinkedHashSet(); 许可实体: @Entity public class Permission { @Id @GeneratedValue(strategy […]