这是我需要完成的一个例子。有一个带有虚拟方法的远程EJB接口。该接口由两个有状态EJB实现,第一个EJB需要执行第二个EJB的查找:
@Stateful
@Remote(BeanI.class)
public class Bean1 implements BeanI {
@Override
public void doSomething() {
try {
System.out.println("Bean1");
JndiManager.lookup(Bean2.class).doSomething();
} catch (Exception ex) { ... }
}
}
@Stateful
@Remote(BeanI.class)
public class Bean2 implements BeanI {
@Override
public void doSomething() {
System.out.println("Bean2");
}
}
助手类JndiManager如下所示:
public class JndiManager {
private static Hashtable<String, Object> jndiProps;
static {
jndiProps = new Hashtable<>();
jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
}
public static BeanI lookup(Class<?> cls) throws NamingException {
final String name = "ejb:/TestServer//" + cls.getSimpleName() + "!" +
BeanI.class.getName() + "?stateful";
Context ctx = new InitialContext(jndiProps);
return (BeanI) ctx.lookup(name);
}
}
客户端应用程序执行Bean1的查找并调用其方法。这是JBossEJB客户端。属性文件:
remote.clusters=ejb
remote.cluster.ejb.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.cluster.ejb.connect.options.org.xnio.Options.SSL_ENABLED=false
remote.cluster.ejb.username=someuser
remote.cluster.ejb.password=somepass1~
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=someuser
remote.connection.default.password=somepass1~
已成功调用Bean1,但其对Bean2的查找失败。错误是:
java.lang.IllegalStateException: EJBCLIENT000029: No cluster context available for cluster named ejb
line -> JndiManager.lookup(Bean2.class).doSomething();
它在独立模式下工作正常,但在域模式下失败(运行单个主节点)。此外,JBoss EAP 6.1中的一切都非常好。
任何帮助将不胜感激。
这似乎是WildFly中的一个bug。
WildFly希望初始化本地EJB客户端以进行集群,请参见org。jboss。ejb。客户EJBClient上下文,第989行
但是由于缺少对服务EJBRemoteConnectorService的依赖关系,初始化没有发生,请参见org.jboss.as.ejb3.remote.LocalEjbRecader,第449行。
对EJBRemoteConnectorService的依赖关系在org中定义为可选的。jboss。像ejb3.子系统。EJB3子系统Add,第416和426行。问题是EJBRemoteConnectorService总是在LocalEjbReceiver服务之后初始化,因此在LocalEjbReceiver中总是为null。这会导致跳过群集初始化。
该问题可以通过更改DependencyType. OPTIONAL到DependencyType. REQUIRED行416和426在org.jboss.as.ejb3.subsystem.EJB3SubsystemAdd.
您可以下载一个补丁文件(适用于WildFly 8.0.Final)并覆盖WildFly/modules/system/layers/base/org/jboss/as/ejb3/main/WildFly-ejb3-8.0.0中的现有文件。最终的罐子应用此修补程序将解决您的问题。
我有以下... 也试过... 这是WAS6-8.5的一个港口项目
我有一个Kubernetes集群,其中不同的pod在不同的名称空间中运行。我如何知道是否有pod出现故障? 是否有任何单个命令来检查失败的pod列表或重述的pod列表? 重新启动的原因(日志)?
我试图从我的Spark2应用程序中使用Hadoop的copyToLocalFile函数将一个文件从HDFS复制到本地。
命令在rest两个节点上运行,一切正常。当我想跑的时候 nodetool状态 命令时,我得到了这个错误消息
我尝试为库伯内特斯设置一个haproxd的多主节点设置,如[1]中所述。我的网络配置是: haproc=192.168.1.213 master 0|1|2=192.168.1.210|211|212 worker0|1|2=192.168.1.220|221|222(此时不感兴趣) 所有主机都能够相互连接(DNS针对每个节点进行解析)。每个节点都运行 Ubuntu 18.04.3 (LTS)。泊
当我们使用包“RMR”(RHadoop的一部分)并从RStudio中运行的R程序内部调用mapreduce()时,就会出现错误。 为了简化这篇文章,我展示了一个失败的非常简单的程序(其他更大的程序以相同的错误消息失败) 在R-Studio控制台上显示的错误有