[
https://issues.jboss.org/browse/WFLY-11664?page=com.atlassian.jira.plugin...
]
Ivan Straka updated WFLY-11664:
-------------------------------
Description:
Lets have two WildFly servers and same EJB on both. They have nothing to do with each
other.
*Scenario*
# client invoke method on both beans and the first called server crash during invocation
# after the server reboots, client is unable to discover EJB on the server
{code:java}Exception in thread "main" java.lang.RuntimeException:
javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request
for EJB StatelessEJBLocator for "/server-1/HelloBean", view is interface
ejb.HelloBeanRemote, affinity is None
at client.Client.call(Client.java:41)
at client.Client.main(Client.java:21)
Caused by: javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination
for request for EJB StatelessEJBLocator for "/server-1/HelloBean", view is
interface ejb.HelloBeanRemote, affinity is None
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:592)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.protocol.remote.RemotingEJBClientInterceptor.handleInvocationResult(RemotingEJBClientInterceptor.java:56)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.TransactionPostDiscoveryInterceptor.handleInvocationResult(TransactionPostDiscoveryInterceptor.java:133)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.DiscoveryEJBClientInterceptor.handleInvocationResult(DiscoveryEJBClientInterceptor.java:115)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.NamingEJBClientInterceptor.handleInvocationResult(NamingEJBClientInterceptor.java:79)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:172)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:938)
at
org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:177)
at
org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:112)
at com.sun.proxy.$Proxy0.hello(Unknown Source)
at client.Client.call(Client.java:35)
... 1 more
{code}
I hit this issue with 15.0.0.Final, 14.0.0.Final but not with 12.0.0.Final.
If client try to invoke bean on the first server before it reboots, there is no problem
after.
*Client side*
{code:java}
public static void main(String[] args)
throws Exception {
call("server-2", true);
call("server-1", true);
for (int i = 30; i > 0; i--) {
System.out.println(i);
Thread.sleep(1000);
}
call("server-1", false);
}
public static Properties getCtxProperties() {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.wildfly.naming.client.WildFlyInitialContextFactory");
return props;
}
public static void call(String container, boolean exceptedFailure) {
try {
InitialContext ctx = new InitialContext(getCtxProperties());
String lookupName = "ejb:/" + container +
"/HelloBean!ejb.HelloBeanRemote";
HelloBeanRemote bean = (HelloBeanRemote) ctx.lookup(lookupName);
System.out.println(bean.hello());
} catch (Exception e) {
if (exceptedFailure) {
System.out.println("EXPECTED FAILURE");
e.printStackTrace();
} else {
throw new RuntimeException(e);
}
}
}
{code}
*Server side*
{code:java}
@Stateless
@Remote(HelloBeanRemote.class)
public class HelloBean {
private static Logger log = Logger.getLogger(HelloBean.class);
public String hello() throws RemoteException {
log.info("hello called with message");
return "Hello there";
}
}
{code}
was:
Lets have two WildFly servers and same EJB on both. They have nothing to do with each
other.
*Scenario*
# client invoke method on both beans and the first called server crash during invocation
# after the server reboots, client is unable to discover EJB on the server
{code:java}Exception in thread "main" java.lang.RuntimeException:
javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request
for EJB StatelessEJBLocator for "/server-1/HelloBean", view is interface
ejb.HelloBeanRemote, affinity is None
at client.Client.call(Client.java:41)
at client.Client.main(Client.java:21)
Caused by: javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination
for request for EJB StatelessEJBLocator for "/server-1/HelloBean", view is
interface ejb.HelloBeanRemote, affinity is None
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:592)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.protocol.remote.RemotingEJBClientInterceptor.handleInvocationResult(RemotingEJBClientInterceptor.java:56)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.TransactionPostDiscoveryInterceptor.handleInvocationResult(TransactionPostDiscoveryInterceptor.java:133)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.DiscoveryEJBClientInterceptor.handleInvocationResult(DiscoveryEJBClientInterceptor.java:115)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.NamingEJBClientInterceptor.handleInvocationResult(NamingEJBClientInterceptor.java:79)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:172)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:938)
at
org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:177)
at
org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:112)
at com.sun.proxy.$Proxy0.hello(Unknown Source)
at client.Client.call(Client.java:35)
... 1 more
{code}
I hit this issue with 15.0.0.Final, 14.0.0.Final but not with 12.0.0.Final.
If client try to invoke bean on the first server before it reboots, there is no problem
after.
EJB client is unable to discover EJB after WildFly crash during
previous call and reboot
----------------------------------------------------------------------------------------
Key: WFLY-11664
URL:
https://issues.jboss.org/browse/WFLY-11664
Project: WildFly
Issue Type: Bug
Components: EJB, Remoting
Affects Versions: 14.0.0.Final, 15.0.0.Final
Reporter: Ivan Straka
Priority: Blocker
Attachments: reproducer.zip
Lets have two WildFly servers and same EJB on both. They have nothing to do with each
other.
*Scenario*
# client invoke method on both beans and the first called server crash during invocation
# after the server reboots, client is unable to discover EJB on the server
{code:java}Exception in thread "main" java.lang.RuntimeException:
javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination for request
for EJB StatelessEJBLocator for "/server-1/HelloBean", view is interface
ejb.HelloBeanRemote, affinity is None
at client.Client.call(Client.java:41)
at client.Client.main(Client.java:21)
Caused by: javax.ejb.NoSuchEJBException: EJBCLIENT000079: Unable to discover destination
for request for EJB StatelessEJBLocator for "/server-1/HelloBean", view is
interface ejb.HelloBeanRemote, affinity is None
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:592)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.protocol.remote.RemotingEJBClientInterceptor.handleInvocationResult(RemotingEJBClientInterceptor.java:56)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.TransactionPostDiscoveryInterceptor.handleInvocationResult(TransactionPostDiscoveryInterceptor.java:133)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.DiscoveryEJBClientInterceptor.handleInvocationResult(DiscoveryEJBClientInterceptor.java:115)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.NamingEJBClientInterceptor.handleInvocationResult(NamingEJBClientInterceptor.java:79)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:172)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:594)
at
org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:528)
at
org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:938)
at
org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:177)
at
org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:112)
at com.sun.proxy.$Proxy0.hello(Unknown Source)
at client.Client.call(Client.java:35)
... 1 more
{code}
I hit this issue with 15.0.0.Final, 14.0.0.Final but not with 12.0.0.Final.
If client try to invoke bean on the first server before it reboots, there is no problem
after.
*Client side*
{code:java}
public static void main(String[] args)
throws Exception {
call("server-2", true);
call("server-1", true);
for (int i = 30; i > 0; i--) {
System.out.println(i);
Thread.sleep(1000);
}
call("server-1", false);
}
public static Properties getCtxProperties() {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.wildfly.naming.client.WildFlyInitialContextFactory");
return props;
}
public static void call(String container, boolean exceptedFailure) {
try {
InitialContext ctx = new InitialContext(getCtxProperties());
String lookupName = "ejb:/" + container +
"/HelloBean!ejb.HelloBeanRemote";
HelloBeanRemote bean = (HelloBeanRemote) ctx.lookup(lookupName);
System.out.println(bean.hello());
} catch (Exception e) {
if (exceptedFailure) {
System.out.println("EXPECTED FAILURE");
e.printStackTrace();
} else {
throw new RuntimeException(e);
}
}
}
{code}
*Server side*
{code:java}
@Stateless
@Remote(HelloBeanRemote.class)
public class HelloBean {
private static Logger log = Logger.getLogger(HelloBean.class);
public String hello() throws RemoteException {
log.info("hello called with message");
return "Hello there";
}
}
{code}
--
This message was sent by Atlassian Jira
(v7.12.1#712002)