[Building Sakai] Jforum in Sakai 10

Kusnetz, Jeremy JKusnetz at APUS.EDU
Mon Nov 24 10:56:41 PST 2014


Steve was on the right track.

etudes-jforum-api-2.9.11.jar was deployed to both the components and webapp.  I removed the one in webapp and now it’s working.

That said, why was etudes-jforum-api-2.9.11.jar deployed to both places?  How can I prevent this from happing next time I deploy jforum?

Thanks for your help getting it working!



From: Steve Swinsburg <steve.swinsburg at gmail.com<mailto:steve.swinsburg at gmail.com>>
Date: Friday, November 21, 2014 at 7:50 PM
To: William Niebel <wdn5e at eservices.virginia.edu<mailto:wdn5e at eservices.virginia.edu>>
Cc: Jeremy Kusnetz <jkusnetz at apus.edu<mailto:jkusnetz at apus.edu>>, Murthy Tanniru <murthy at etudes.org<mailto:murthy at etudes.org>>, "sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>" <sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>>
Subject: Re: [Building Sakai] Jforum in Sakai 10


Check the deployed artifacts. This error means you have something loaded twice in difference class loaders, quite possibly the impl is in components and the webapp.

Cheers

On 22 Nov 2014 05:42, "Niebel, William D. (Bill) (wdn5e)" <wdn5e at eservices.virginia.edu<mailto:wdn5e at eservices.virginia.edu>> wrote:
This might be a class loader issue, i.e., the classes involved on casting might be incompatible not from having different coded contents -- but just because they were loaded by different class loaders.  This could be from the interface and implementation being differently loaded, but maybe instead from one of these (interface or implementation) being loaded twice by two different class loaders.

Maybe related or not:
https://confluence.sakaiproject.org/display/DOC/Sakai+10+and+later+System+Requirements
refers to
https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7
I would make sure your edit was right at step 9 in the second document.

Tomcat changed its class loader relationships (their priority or ordering, something like that) a major release ago or two.  I don't know if the configuration edit (step 9) was tied to that.  Regardless, looking at where the ClassCastException was thrown, the class is being loaded from its stated name, then cast, so class loaders and their ordered search through class file directories and jar sources seem possibly involved.

Separately, did you look at the versions (and parent versions) of the pom files in the various Etudes tools you have installed, and in Sakai10 top-level and master poms (both)?  It looks like it would be easy to mix locally-built and remotely-fetched maven artifacts -- or to duplicate an artifact but with two different versions.  Importantly, this could manifest as unexpected and maybe unseen property settings being used on build -- as opposed to maybe more obviously multiple jars deploying to Tomcat and containing the same class.  This all depends on if properties are set differently in various parts of the build because of different versions or parenting settings in the poms.

We are beginning our upgrade process to 10.2, but won't bring in jforum probably for some weeks.  So we certainly wish you early success and would like to hear how you resolve this.

Best of luck!

Bill Niebel
University of Virginia



________________________________________
From: sakai-dev-bounces at collab.sakaiproject.org<mailto:sakai-dev-bounces at collab.sakaiproject.org> [sakai-dev-bounces at collab.sakaiproject.org<mailto:sakai-dev-bounces at collab.sakaiproject.org>] on behalf of Murthy Tanniru [murthy at etudes.org<mailto:murthy at etudes.org>]
Sent: Thursday, November 20, 2014 4:57 PM
To: Kusnetz, Jeremy; sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>
Subject: Re: [Building Sakai] Jforum in Sakai 10

As of now we don't have timeline. May be in January/February we will
test with Sakai 10.

The current version should work. From the error message there seems
conflict with api and impl version of files

Murthy
On 11/20/2014 1:53 PM, Kusnetz, Jeremy wrote:
> Thanks.  No multiple versions of the files in those directories.
>
> Is there a timeline for when Jforums will be tested in 10?  Since you have
> already done Melete and Mneme is Jforum next on your list?
>
>
>
>
> On 11/20/14, 4:43 PM, "Murthy Tanniru" <murthy at etudes.org<mailto:murthy at etudes.org>> wrote:
>
>> We didn't test JForum with Sakai 10 yet. Check
>> tomcat/components/etudes-jforum-pack/WEB-INF/lib and tomcat/shared/lib
>> if you have multiple version of files.
>>
>> Thanks
>> Murthy
>> Etudes Inc
>> On 11/20/2014 1:21 PM, Kusnetz, Jeremy wrote:
>>> Has anyone gotten Jforum working in Sakai 10?  Etudes has Melete
>>> working for Sakai 10:
>>> http://etudes.org/help/developers/melete/download/
>>> which uses etudes-util 1.0.25
>>>
>>> But for Jforum it looks like the last version was for Sakai 2.9 using
>>> etudes-util 1.0.17
>>> http://etudes.org/help/developers/jforum/download/
>>>
>>> I was able to get Jforum to build with etudes-util 1.0.25 (we are also
>>> running Melete), but when I actually hit the tool in Sakai I get the
>>> following exceptions:
>>>
>>> 2014-11-20 15:16:13,908 ERROR ajp-bio-45259-exec-1
>>> org.etudes.jforum.JForum - an error occured in JForum.service():
>>> java.lang.ClassCastException:
>>> org.etudes.component.app.jforum.JForumUserServiceImpl cannot be cast to
>>> org.etudes.api.app.jforum.JForumUserService
>>> java.lang.ClassCastException:
>>> org.etudes.component.app.jforum.JForumUserServiceImpl cannot be cast to
>>> org.etudes.api.app.jforum.JForumUserService
>>> at
>>> org.etudes.jforum.ControllerUtils.refreshSession(ControllerUtils.java:726
>>> )
>>> at org.etudes.jforum.JForum.service(JForum.java:195)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
>>> ionFilterChain.java:303)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
>>> rChain.java:208)
>>> at
>>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
>>> ionFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
>>> rChain.java:208)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatch
>>> er.java:748)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(Application
>>> Dispatcher.java:486)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispa
>>> tcher.java:411)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatc
>>> her.java:338)
>>> at org.sakaiproject.jsf.util.JsfTool.dispatch(JsfTool.java:138)
>>> at org.sakaiproject.jsf.util.JsfTool.doGet(JsfTool.java:242)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
>>> ionFilterChain.java:303)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
>>> rChain.java:208)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatch
>>> er.java:748)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(Application
>>> Dispatcher.java:486)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispa
>>> tcher.java:378)
>>> at
>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatc
>>> her.java:338)
>>> at
>>> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(Activ
>>> eToolComponent.java:513)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(Skinnabl
>>> eCharonPortal.java:1536)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.ja
>>> va:215)
>>> at
>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.jav
>>> a:98)
>>> at
>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.doGet(SkinnableCharo
>>> nPortal.java:901)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
>>> ionFilterChain.java:303)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
>>> rChain.java:208)
>>> at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:455)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
>>> ionFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
>>> rChain.java:208)
>>> at
>>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
>>> ionFilterChain.java:241)
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
>>> rChain.java:208)
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
>>> .java:220)
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
>>> .java:122)
>>> at
>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorB
>>> ase.java:503)
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
>>> 170)
>>> at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
>>> 103)
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j
>>> ava:116)
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:42
>>> 1)
>>> at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
>>> at
>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Abst
>>> ractProtocol.java:611)
>>> at
>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.ja
>>> va:314)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java
>>> :1110)
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.jav
>>> a:603)
>>> at
>>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread
>>> .java:61)
>>> at java.lang.Thread.run(Thread.java:722)
>>>
>>> This message is private and confidential. If you have received it in
>>> error, please notify the sender and remove it from your system.
>>>
>>> _______________________________________________
>>> sakai-dev mailing list
>>> sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>
>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>
>>> TO UNSUBSCRIBE: send email to
>>> sakai-dev-unsubscribe at collab.sakaiproject.org<mailto:sakai-dev-unsubscribe at collab.sakaiproject.org> with a subject of
>>> "unsubscribe"
>> _______________________________________________
>> sakai-dev mailing list
>> sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>
>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>
>> TO UNSUBSCRIBE: send email to
>> sakai-dev-unsubscribe at collab.sakaiproject.org<mailto:sakai-dev-unsubscribe at collab.sakaiproject.org> with a subject of
>> "unsubscribe"
> This message is private and confidential. If you have received it in error, please notify the sender and remove it from your system.
>

_______________________________________________
sakai-dev mailing list
sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>
http://collab.sakaiproject.org/mailman/listinfo/sakai-dev

TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org<mailto:sakai-dev-unsubscribe at collab.sakaiproject.org> with a subject of "unsubscribe"
_______________________________________________
sakai-dev mailing list
sakai-dev at collab.sakaiproject.org<mailto:sakai-dev at collab.sakaiproject.org>
http://collab.sakaiproject.org/mailman/listinfo/sakai-dev

TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org<mailto:sakai-dev-unsubscribe at collab.sakaiproject.org> with a subject of "unsubscribe"
This message is private and confidential. If you have received it in error, please notify the sender and remove it from your system.



More information about the sakai-dev mailing list