]
Alan Chung commented on WFLY-2978:
----------------------------------
I have the same issue (jboss-ejb-client.xml is ignored by Wildfly). I use Wildfly 8.1.0.
This works.
If client on server 1 is pure java client using jboss-ejb-client.properties then the
context.lookup("ejb://....") on server 1 will find the remote EJB on server
2.
This does not work.
If client on server 1 is Wildfly client serve instance using jboss-ejb-client.xml then
the context.lookup("ejb://....") on server 1 failed to find the remote EJB on
server 2.
The return object is always the local object on server 1.
Actually the jboss-ejb-client.xml is totally ignored by Wildfly remoting. Wildfly is not
even attempting to access jboss-ejb-client.xml. I tried with/without
jboss-ejb-client.xml the result is the same. It always returns the local object on server
1.
Your help would be much appreciated.
This is my client server configuration on server 1.
jboss-ejb-client.xml is placed under
client-app.ear
|
|--- META-INF
| |
| |--- jboss-ejb-client.xml
|
|--- web.war
| |
| |--- WEB-INF/classes
| | |
| | |---- // classes in the web app
standalone-full.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="wildfly"
security-realm="ejb-security-realm" protocol="http-remoting">
<properties>
<property name="SASL_POLICY_NOANONYMOUS"
value="false"/>
<property name="SSL_ENABLED"
value="false"/>
</properties>
</remote-outbound-connection>
</outbound-connections>
</subsystem>
..........<!--- 10.1.64.68 is server 2 --->
<socket-binding-group name="standard-sockets"
default-interface="public" port-
offset="${jboss.socket.binding.port-offset:0}">
.........
<outbound-socket-binding name="remote-ejb">
<remote-destination host="10.1.64.68" port="8080"/>
</outbound-socket-binding>
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
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}