我有一个EJB bean,它公开了两个接口,如下所示:本地接口用于我的web应用程序,远程接口用于我的app客户机
@Stateless
public class CoreMainEJB implements CoreMainEJBRemote, CoreMainEJBLocal {
//...
}
因此,我的如下所示。在本例中发生了远程方法调用。
public class Main {
@EJB
private static CoreMainEJBRemote coreEJBRemote;
public static void main(String[] args
我在想,怎样才能节省通过jndi查找远程ejb引用的时间。我有一个应用程序需要非常快地工作,但它也必须调用远程ejb,这会减慢它的速度。
所以我的解决方案是这样的:我使用apache commons-pool库,并将它的StackObjectPool实现用于我的远程ejb引用缓存。
private static final ObjectPool pool = new StackObjectPool(new RemoteEjbFactory());
Factory看起来像这样:
public static class RemoteEjbFactory extends BasePoolableOb
我目前正在学习EJB的基础知识。在“Java 7 the Big Picture”一书中,有人提到:
会话bean通常是通过远程接口访问的(不过,正如我们将要看到的,有些情况下不需要远程接口),而消息驱动bean只有一个bean实现类。
基于上述语句,调用消息驱动bean (MDB)就像通过remote interface调用远程会话bean一样(其服务器端接口由@Remote注释完成)似乎是不可能的。
例如,如果远程EJB容器上有MDB,那么:
@Remote
@MessageDriven(mappedName="jms/HelloQueue")
public cla
我正在使用Shiro Security来保护JSF项目。
它按预期工作,包括对远程EJB的调用(这是不安全的)。但是,当调用不安全的EJB时,我有以下警告,但方法执行时没有问题:
IIOP1002: Principal propagation: Cannot find principal information in subject
这到底是什么意思?我该怎么做才能解决这个问题?我需要从安全的应用程序中在远程EJB中执行该方法,每次调用EJB时,这个警告都会被转储到日志中(这种情况多次发生)。
编辑:
当我将项目部署在与EJB相同的Glassfish服务器上时,不会出现警告。
编辑2:
在调用
我收到消息了
<Warning> <EJB> <BEA-010202> <Call-by-reference is not enabled for the EJB 'myEjb'.
The server will have better performance if it is enabled. To enable call-by-reference, set the enable-call-by-reference element to True in the weblogic-ejb-jar.xml deployment descr
如果EJB部署在本地机器上,则表示EJB调用成功。当它被远程jboss机器调用时,会抛出以下异常
Exchange-exception :java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:, moduleName:ejbmavendemo-0.0.1-SNAPSHOT, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationC
我有一个部署到Weblogic的EJB ear。EJB有一些JMS队列设置,它故意发送一个消息。调用EJB的客户机web应用程序在同一台机器上的另一个JVM上运行(以模拟远程调用)
@Remote
public interface MyLog {
public void doSomething();
}
在客户端,
如何开始生成ejb客户端jar ?两者之间有什么区别?
org.ihc.myLog myLog-ejb 1.0 jar
我使用了spring来查找ejb,并且使用了ejb jar (不确定我是否完全理解ejb jar和ejb-client ja