我想使用@Inject@CurrentUser跨所有层(即web层、EJB层)注入(inject)当前用户。为此,我有以下CDIProducer方法:@Named@SessionScopedpublicclassUserController{@ResourceSessionContextsessionContext;@EJBUserDaouserDao;@Produces@CurrentpublicUsergetCurrentUser(){Stringusername=sessionContext.getCallerPrincipal().getName();Useruser=user
我编写了一个小型网络服务,当我尝试将其部署到glassfish时出现此错误:部署期间发生错误:加载应用程序时出现异常:EJB容器初始化错误。有关详细信息,请参阅server.log。@WebService(serviceName="Mathematics")publicclassMathematics{@WebMethod(operationName="add")publicdoubleadd(@WebParam(name="a")doublea,@WebParam(name="b")doubleb){returnNovusMath.add(a,b);}}server.log的相关部分
EJBbean能否实现多个用户定义的接口(interface),业务接口(interface)(@Local、@Remote)或无接口(interface)View(@LocalBean)除外?例如定义两个接口(interface)UserInterface1,UserInterface2,没有注释。这是否合法实现:@StatelesspublicclassMyBeanimplementsUserInterface1,UserInterface2{...那我还有一个困惑:@StatelesspublicclassMyBeanimplementsRunnable{...//insideI
这更多是我目前遇到的架构问题。我需要有关在项目中集成EJB和JPA的最佳实践的帮助。我想要EJB来完成服务层的工作,其中包含我的应用程序的业务逻辑。就在那之下,我想要一个DAO层,我的EJB将有一个句柄,使用DAO工厂尽可能地分离这两个层。知道了这一点,我显然也不能将我的DAO作为EJB,因为我不希望它们自动注入(inject),因为我希望它们通过工厂创建。这导致我使用手动创建实体管理器Persistence.createEntityManagerFactory("PortalEJB").createEntityManager();现在...这个调用位于我的抽象JPADAO中:publ
我正在尝试编写一个简单的无状态sessionbean,但我在查找时间中给出的窄引用有问题。我得到了classcastexeption我用eclipseIDE我的bean类packagecodes;importjava.rmi.RemoteException;importjavax.ejb.EJBException;importjavax.ejb.SessionBean;importjavax.ejb.SessionContext;publicclassSinaBeanimplementsSessionBean{/****/privatestaticfinallongserialVers
我在处理RESTful服务中的异常时遇到问题:@Path("/blah")@StatelesspublicclassBlahResource{@EJBBlahServiceblahService;@GETpublicResponsegetBlah(){try{Blahblah=blahService.getBlah();SomeUtil.doSomething();returnblah;}catch(Exceptione){thrownewRestException(e.getMessage(),"unknownreason",Response.Status.INTERNAL_SERV
构建bean后,我想使用EntityManager从数据库中检索数据。在构造函数中是不可能的,因为EntityManager是在调用构造函数之后注入(inject)的。所以我尝试用@PostConstruct注释的方法来做。根据API,在完成所有注入(inject)后调用PostConstruct方法。执行查询有效,但它总是返回一个空列表。如果我在其他方法中使用相同的查询,它会返回正确的结果。有谁知道,为什么它在PostConstruct方法中不起作用?@Stateful(mappedName="price")@Singleton@StartuppublicclassPriceMana
我们的项目有多个EJB模块,我们希望在它们之间共享一个persistence.xml文件。我们将persistence.xml文件放在EAR的META-INF目录中,但持久性单元在运行时不可用。由于我们强制使用了不正确的类和jar文件,因此似乎从未读取过该文件,但没有任何反应。为什么WebLogic不读取EAR中的persistence.xml文件?运行代码时出现以下错误,未找到PU(可用持久性单元:[])。CausedBy:java.lang.IllegalArgumentException:Nopersistenceunitnamed'em'isavailableinscopeej
实际上,我有以下流程:用户点击“大操作”按钮;它调用RESTful服务;其余服务调用HugeOpServiceBean,它是一个EJB;此EJB将通知JMS队列执行HugeOperation;这个HugeOperation可以有两个或多个实现,因此,每个正在监听它的MDBean都会运行(这意味着它可能在另一个.ear中)我想听听你们如何做或建议我让我能够获得这些MDBeans的“状态”。基本上,每个MDBean都会运行一些对象类型列表中的一些方法,因此,计算完成的百分比应该很容易,我只是不知道如何以及哪个是我可以做出的最好的架构决策来使它易于访问在一些RESTful服务中。提前致谢。
Hibernate和EJB3相对于彼此的优点和缺点是什么?我找到了this帖子,但它并没有真正解决我的问题。如果我对这两种技术都没有任何特别的联系,什么会导致我选择其中一种而不是另一种?或者在某些情况下我想同时使用两者?谢谢,扎克编辑:回应评论:我不太了解EJB3。我只是想了解它是否对我的公司可行。如果EJB3不能与Hibernate相媲美,请解释原因。 最佳答案 JPA提供了Hibernate功能的一个子集,但是EJB3提供了Hibernate没有解决的其他服务(例如Web服务、EJB、定时器服务)与Hibernate相比,JPA