logger conflict between jboss and spring

58 views
Skip to first unread message

Brent Sun

unread,
Nov 12, 2015, 9:00:36 PM11/12/15
to jasig-cas-dev
hi,
I hit error below, suspect it is due to logger for jboss and spring conflicted, if I supply  org.slf4j.impl.Slf4jLogger to war, it will hit more error. after search around, still cannot find solution, who encountered this error when run cas 4.1.1 on jboss?

2015-11-12 23:45:05,822 DEBUG [org.jasig.cas.web.FlowExecutionExceptionResolver] - Error getting flow information for URL [/cas/login?service=https%3A%2F%2Fbitlt00430%3A11443%2Fcas%2Foauth2.0%2FcallbackAuthorize]
org.jasig.spring.webflow.plugin.ClientFlowExecutionRepositoryException: Error decoding flow execution
 at org.jasig.spring.webflow.plugin.ClientFlowExecutionRepository.getFlowExecution(ClientFlowExecutionRepository.java:95)
 at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:168)
 at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:228)
 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
 at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
 at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
 at org.jasig.cas.security.RequestParameterPolicyEnforcementFilter.doFilter(RequestParameterPolicyEnforcementFilter.java:296)
 at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
 at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
 at org.jasig.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:62)
 at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Deserialization error
 at org.jasig.spring.webflow.plugin.EncryptedTranscoder.decode(EncryptedTranscoder.java:119)
 at org.jasig.spring.webflow.plugin.ClientFlowExecutionRepository.getFlowExecution(ClientFlowExecutionRepository.java:90)
 ... 38 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.Slf4jLogger from [Module "deployment.cas.war:main" from Service Module Loader]
 at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213)
 at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
 at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
 at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
 at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:274)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
 at java.lang.reflect.Method.invoke(Method.java:606)
 at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
 at org.springframework.webflow.engine.impl.FlowExecutionImpl.readExternal(FlowExecutionImpl.java:306)
 at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
 at org.jasig.spring.webflow.plugin.EncryptedTranscoder.decode(EncryptedTranscoder.java:117)
 ... 39 more

Brent Sun

unread,
Nov 12, 2015, 9:02:03 PM11/12/15
to jasig-cas-dev
and why logger is doing Deserialization?

Andrew Scully

unread,
Nov 13, 2015, 4:02:53 AM11/13/15
to jasig-cas-dev
I had something like this, see https://groups.google.com/forum/#!topic/jasig-cas-dev/to7qZ38NdH4

In my case it was because a logger was declared as a non-transient field variable, so was being serialised along with the rest of the object.

The logger class was then not "visible" to the unserialising code.

Perhaps this could be the same sort of issue?

Brent Sun

unread,
Nov 13, 2015, 9:42:10 PM11/13/15
to jasig-cas-dev
Andrew, 
thanks for your reply, can feel warm from this cold user group (rarely got help).

did you try it and resolve your issue? manually bringing  AbstractCasExpirationPolicy into cas overlay build is a hassle, this is the way I can think of to fix my issue, not sure whether there is other way?

rgds
brent

Andrew Scully

unread,
Nov 14, 2015, 12:33:00 PM11/14/15
to cas...@lists.jasig.org
For the moment I've had to apply a patch as part of the overlay I'm afraid.

Ideally it would be good if this could be fixed on the branch (simply adding the transient keyword should fix it) but I'm not currently able to contribute source to the project.

With OSGI, you can "import" the package in question (org.slf4j.impl) so that the unserialising ClassLoader has visibility of it. I assume there is an equivalent way of doing this with jboss-modules? Might be worth investigating.

-- 
You are currently subscribed to cas...@lists.jasig.org as: andrew...@gmail.com
To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-dev

-- 
You are currently subscribed to cas...@lists.jasig.org as: jasig-cas-dev+...@googlegroups.com
To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-dev

Brent Sun

unread,
Nov 14, 2015, 9:27:46 PM11/14/15
to jasig-cas-dev, cas...@lists.jasig.org

I tried put in relevant jars into WEB-INF/lib, however it will hit error:
2015-11-13 05:43:08,912 DEBUG [org.jasig.cas.web.flow.InitialFlowSetupAction] - Placing registered service [^(https|imaps)://.*] with id [10000001] in context scope
2015-11-13 05:43:08,943 DEBUG [org.jasig.cas.web.flow.GenerateLoginTicketAction] - Generated login ticket LT-1-2Yb6TKErl3Nf31i07d6vKDyhXMDGkY-bitlt00430
2015-11-13 05:43:08,943 DEBUG [org.jasig.cas.web.flow.GenerateLoginTicketAction] - Generated login ticket LT-1-2Yb6TKErl3Nf31i07d6vKDyhXMDGkY-bitlt00430
2015-11-13 05:43:11,348 DEBUG [org.jasig.cas.web.FlowExecutionExceptionResolver] - Ignoring the received exception due to a type mismatch
java.lang.ClassCastException: cannot assign instance of org.jboss.logmanager.Logger to field org.slf4j.impl.Slf4jLogger.logger of type org.jboss.logmanager.Logger in instance of org.slf4j.impl.Slf4jLogger
 at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2083)
 at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1261)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1996)

 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)

 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
 at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)

 at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
 at java.util.HashMap.readObject(HashMap.java:1180)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 

look at this error, indicates low level conflict at jboss and spring. I gave up, too much obstacles, I have tried in last 3 weeks. writing my own oauth2 server using spring is much more easier than using cas server.

rgds
brent

Rodrigo Amaral

unread,
Nov 22, 2015, 6:24:10 PM11/22/15
to jasig-cas-dev
I got to the same point you did.

I solved this problem by following this post:
http://stackoverflow.com/questions/30274379/get-spring-framework-logging-in-wildfly

I added the two lines below to the Wildfly logging subsystem:
<add-logging-api-dependencies value="false"/>
<use-deployment-logging-config value="false"/>

After this, I could remove the maven dependencies that I tried to put to make the log work.

I hope it helps.

Reply all
Reply to author
Forward
0 new messages