我正在测试JAASSubject的传播用customPrincipal从运行在原始Java运行时上的独立EJB客户端到JavaEE服务器。我同时针对JBoss和WebSphere实现。根据thisforumthread我曾预计它会很容易地与JBoss一起工作。这是我的EJB客户端代码片段:Subjectsubject=newSubject();PrincipalmyPrincipal=newMyPrincipal("meImyself");subject.getPrincipals().add(myPrincipal);PrivilegedExceptionActionaction=n
我想使用Maven构建和部署远程EJB。稍后,我希望能够将此EJB注入(inject)并使用到一个单独的WAR项目中。所以我想我需要一个定义接口(interface)的jar文件,并在两个项目(ejb和war)中使用该jar。我有这个接口(interface),在一个名为example:api的Maven项目中,打包为jar:packageexample;importjavax.ejb.Remote;@RemotepublicinterfaceBean{voidprocess();}我在另一个名为example:ejb的Maven项目中实现了上述接口(interface),打包为ejb
我对以下情况下的交易性能和/或成本有疑问。环境:JBoss7.1.1/Oracle11G/Java6场景A-1EJB:我创建了一个EJB,它使用CMP(事务REQUIRES_NEW)将记录保存到数据库:@Override@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)publicvoidsaveTerminal(TerminalSaveRequestrequest){TerminalEntityterminalEntity=newTerminalEntity();terminalEntity.setId(reque
我已经开始阅读有关单例sessionbean和用于使用容器管理并发的注释的信息。与简单地使用“同步”关键字相比,我看不出这样做有什么好处,所以我怀疑我遗漏了一些重要的东西。考虑O'Reilly的Rubinger&Burke的书“EnterpriseJavaBeans3.1”中的这个例子:@javax.ejb.Lock(javax.ejb.LockType.READ)publicStringconcurrentReadOnlyMethod(){...}@javax.ejb.Lock(javax.ejb.LockType.WRITE)publicvoidallowOnlyOneWriteA
我目前正在将我们的代码从Jboss7迁移到Wildfly10。服务器本身启动完全正常。当尝试将我们的客户端与正在工作的新wildfly10服务器连接以进行ejb远程调用时,它根本无法工作。我唯一能处理的是以下错误:org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelectorsetupEJBReceiversWARN:CouldnotregisteraEJBreceiverforconnectiontoremote-ip:8080java.lang.RuntimeException:Operationfailedwit
在我们的J2EE应用程序中,我们使用EJB-3有状态bean来允许前端代码创建、修改和保存持久实体(通过JPA-2管理)。看起来像这样:@LocalBean@Stateful@TransactionAttribute(TransactionAttributeType.NEVER)publicclassMyEntityControllerimplementsSerializable{@PersistenceContext(type=PersistenceContextType.EXTENDED)privateEntityManagerem;privateMyEntitycurrent;p
我知道有两种获取EJB实例的方法:通过@EJB注释在servlet和EJB中进行依赖注入(inject)通过Context.lookup在任何地方进行JNDI查找使用这两种方法中的任何一种有什么区别、含义和问题?它们相同吗?依赖注入(inject)比查找快吗?事务处理和对象生命周期管理呢?我知道的事情包括:注释仅适用于servlet和EJB方便的语法容器无关查找可以在运行时以编程方式实例化EJB接口(interface)的不同实现。可在任何地方工作-例如POJO。取决于容器的命名约定 最佳答案 两者都达到相同的结果。这更像是一个耦合
我正在部署一个EJB,它应该设置一个计时器并由它每24小时触发一次。但是我应该在哪里设置定时器呢?@PostConstruct无济于事——这是一个sessionbean,因此在创建实际实例时将调用构造后方法(这永远不会发生,因为此bean的唯一目的是跟踪计时器).有没有其他方法可以获取有关bean部署(不是实例化)的通知,以便在那里设置计时器?谢谢 最佳答案 EJB3.1引入了Singletonbean.它将在部署EJB时创建。@Singleton@StartuppublicclassTimerSessionBean{@Resour
作为JavaEE的新手(但不是Java本身),我正在尝试构建一个非常简单的“企业应用程序”,将Hibernate作为JPA提供程序,将JSF作为实际的UI框架。为此,我将NetBeans7与GlassFish3.1结合使用。{ApplicationName}-ejb:我已经完成了从数据库和这些实体的本地sessionbean生成实体类的工作。Beans.xml就位。@StatelesspublicclassQuestFacadeextendsAbstractFacadeimplementsQuestFacadeLocal{//somemethodshereaswellasEntityM
在一个常见的MVC设计的应用程序中,让服务层依赖于用户session是不是一个坏主意?假设有一个服务方法可以从数据库中获取一些对象,并且您希望根据调用的初始化者返回不同的结果——例如,管理员可能会得到10行对象,而普通用户可能只会得到7行因为最后3个是“仅限管理员”的对象。解决这个问题的几种方法是:引入一个新的方法参数,其中包括调用用户。无依赖性但很麻烦,必须在许多方法中输入用户参数。针对不同的用户角色制定不同的方法(具有多种结果)。也没有依赖性,但有很多方法基本上做同样的事情,这增加了代码重复的风险。让该方法从存储当前用户session的静态上下文中的ThreadLocal变量中读取