]
Alan Chung commented on WFLY-2978:
----------------------------------
[~stuartdouglas][~jaikiran]
Hi Stuart,
adding "<ejb-receivers exclude-local-receiver="true">" to
jboss-ejb-client.xml did the trick.
Thanks a lot.
Now our server 1 will always get the result of the server 2 object.
That's great and it proves remote lookup works under Wildfly 8.1.0.
But always getting result from remote server has limitations and does not yet satisfy our
business logic.
This is what we need
We want to be able to get the result of remote object on local serve (server 1) if local
server is active else get the result of remote object on remote server (server 2) if
remote server is active.
Only one server is active the other is standby. The server status (active or standby) is
configured by our application.
Please suggest what is the best way to handle this situation.
I would prefer if we can avoid using cluster configuration for our situation if possible.
If clustering is the only way I would appreciate your direction about how to configure
it.
Wildfly ignores jboss-ejb-client.xml
------------------------------------
Key: WFLY-2978
URL:
https://issues.jboss.org/browse/WFLY-2978
Project: WildFly
Issue Type: Bug
Components: EJB, Naming, Remoting
Affects Versions: 8.0.0.Final
Environment: Spring 4.0.2, EJB
Reporter: ofbiz brazil
Assignee: Stuart Douglas
Priority: Critical
Fix For: 8.2.0.Final
Hi all,
I have a project with remote EJB's running in one Wildfly server and the're some
war client projects that invoked those EJB's in another Wildfly server. Even adding
the descriptor jboss-ejb-client.xml into war client projects Widlfly always says:
"No EJB receiver available for handling....". That seems Wildfly is ignoring the
descriptor no matter if the file exists in WEB-INF, by the way in JBoss 7.1.1 it works
perfectly.
I added into client war projects the descripor jboss-ejb-client.xml
{code:xml}
<jboss-ejb-client>
<client-context>
<ejb-receivers>
<remoting-ejb-receiver outbound-connection-ref="remote-ejb-connection"
/>
</ejb-receivers>
</client-context>
</jboss-ejb-client>
{code}
In Wildfly server running EJB's the standalone.xml
{code:xml}
<security-realm name="ejb-security-realm">
<server-identities>
<secret value="c2Fvb3JhY2xlZGV2cGFzcw=="/>
</server-identities>
</security-realm>
{code}
{code:xml}
<subsystem xmlns="urn:jboss:domain:remoting:2.0">
<endpoint worker="default"/>
<http-connector name="http-remoting-connector"
connector-ref="default" security-realm="ApplicationRealm"/>
<outbound-connections>
<remote-outbound-connection name="remote-ejb-connection"
outbound-socket-binding-ref="remote-ejb" username="ejbuser"
security-realm="ejb-security-realm">
<properties>
<property name="SSL_ENABLED"
value="false"/>
<property name="SASL_POLICY_NOANONYMOUS"
value="true"/>
<property name="SASL_POLICY_NOPLAINTEXT"
value="false"/>
</properties>
</remote-outbound-connection>
</outbound-connections>
</subsystem>
{code}
{code:xml}
<socket-binding-group name="standard-sockets"
default-interface="public"
port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-http"
interface="management" port="${jboss.management.http.port:7029}"/>
<socket-binding name="management-https"
interface="management"
port="${jboss.management.https.port:7030}"/>
<socket-binding name="http"
port="${jboss.http.port:7021}"/>
<socket-binding name="https"
port="${jboss.https.port:7022}"/>
<socket-binding name="txn-recovery-environment"
port="7025"/>
<socket-binding name="txn-status-manager"
port="7026"/>
<outbound-socket-binding name="remote-ejb">
<remote-destination host="myserver.com"
port="7021"/>
</outbound-socket-binding>
</socket-binding-group>
{code}
Console exception:
{noformat}
10:41:20,761 INFO [io.undertow.servlet] (MSC service thread 1-9) Initializing Spring
root WebApplicationContext
10:41:22,540 INFO [org.jboss.ejb.client] (MSC service thread 1-9) JBoss EJB Client
version 2.0.0.Final
10:41:22,853 INFO [org.wildfly.extension.undertow] (MSC service thread 1-9) JBAS017534:
Registered web context: /orca
10:41:22,884 INFO [org.jboss.as.server] (ServerService Thread Pool -- 29) JBAS018559:
Deployed "SBBORCA.war" (runtime-name : "SBBORCA.war")
10:41:22,900 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management
interface listening on
http://0.0.0.0:7029/management
10:41:22,900 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console
listening on
http://0.0.0.0:7029
10:41:22,900 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly
8.0.0.Final "WildFly" started in 12312ms - Started 413 of 466 services (93
services are lazy, passive or on-demand)
10:41:45,533 ERROR [io.undertow.request] (default task-2) UT005023: Exception handling
request to /orca/j_spring_cas_security_check: java.lang.RuntimeException:
java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling
[appName:, moduleName:SBBUserAccess, distinctName:] combination for invocation context
org.jboss.ejb.client.EJBClientInvocationContext@19ba64
at
com.sbb.spring.security.CustomUserDetailsService.loadUserByUsername(CustomUserDetailsService.java:63)
[utils-1.0.0.jar:]
at
org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper.loadUserDetails(UserDetailsByNameServiceWrapper.java:51)
[spring-security-core-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.cas.authentication.CasAuthenticationProvider.loadUserByAssertion(CasAuthenticationProvider.java:185)
[spring-security-cas-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.cas.authentication.CasAuthenticationProvider.authenticateNow(CasAuthenticationProvider.java:141)
[spring-security-cas-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.cas.authentication.CasAuthenticationProvider.authenticate(CasAuthenticationProvider.java:126)
[spring-security-cas-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156)
[spring-security-core-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter$AuthenticationManagerDelegator.authenticate(WebSecurityConfigurerAdapter.java:431)
[spring-security-config-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.cas.web.CasAuthenticationFilter.attemptAuthentication(CasAuthenticationFilter.java:242)
[spring-security-cas-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:211)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
[spring-security-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE]
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:177)
[spring-orm-4.0.2.RELEASE.jar:4.0.2.RELEASE]
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
[spring-web-4.0.2.RELEASE.jar:4.0.2.RELEASE]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
[undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:168)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:687)
[undertow-core-1.0.0.Final.jar:1.0.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_51]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
Caused by: java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available
for handling [appName:, moduleName:SBBUserAccess, distinctName:] combination for
invocation context org.jboss.ejb.client.EJBClientInvocationContext@19ba64
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:749)
[jboss-ejb-client-2.0.0.Final.jar:2.0.0.Final]
at
org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:116)
[jboss-ejb-client-2.0.0.Final.jar:2.0.0.Final]
at
org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)
[jboss-ejb-client-2.0.0.Final.jar:2.0.0.Final]
at
org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:253)
[jboss-ejb-client-2.0.0.Final.jar:2.0.0.Final]
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:198)
[jboss-ejb-client-2.0.0.Final.jar:2.0.0.Final]
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:181)
[jboss-ejb-client-2.0.0.Final.jar:2.0.0.Final]
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:144)
[jboss-ejb-client-2.0.0.Final.jar:2.0.0.Final]
at com.sun.proxy.$Proxy89.findByUserProfile(Unknown Source)
at
com.sbb.spring.security.UserProfileGrantedAuthoritiesLoader.loadAuthorities(UserProfileGrantedAuthoritiesLoader.java:44)
[utils-1.0.0.jar:]
at
com.sbb.spring.security.CustomUserDetailsService.loadUserByUsername(CustomUserDetailsService.java:55)
[utils-1.0.0.jar:]
... 52 more
{noformat}