Problem with creating Community Templates in v7

Hi everyone,

I have a problem with Community Templates in Component Pack 7.0.0.2.

I can't create Templates. I can isolate the Problem to the WebSphere Application "IC360_mod_template". When creating a Template I get a 500 error message from "/comm-templates/" which points to CP. In the logs of the pod there is an error pointing to ICXT with a wrong JSON response.

In the "SystemOut.log" of the ICXT Cluster is the following message:

[5/19/21 11:45:00:193 CEST] 00000123 webapp        I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Servlet Message - [IC360_mod_template#ic360.mod.template.war]:.Initializing Spring FrameworkServlet 'ic360.mod.template'
[5/19/21 11:45:00:195 CEST] 00000123 DispatcherSer I org.springframework.web.servlet.FrameworkServlet initServletBean FrameworkServlet 'ic360.mod.template': initialization started
[5/19/21 11:45:00:196 CEST] 00000123 DispatcherSer E org.springframework.web.servlet.FrameworkServlet initServletBean Context initialization failed
                                 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.ibm.ess.ic.ic360.mod.template.api.ActivitiesTemplateAPIController] for bean with name 'activitiesTemplateAPIController' defined in file [/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/swConnectionsCell/IC360_mod_template.ear/ic360.mod.template.war/WEB-INF/classes/com/ibm/ess/ic/ic360/mod/template/api/ActivitiesTemplateAPIController.class]: problem with class file or dependent class; nested exception is java.lang.LinkageError: loading constraint violation when overriding method "com/ibm/ess/ic/ic360/webapp/AbstractIc360Servlet.getLogger()Lorg/slf4j/Logger;" during creation of class "com/ibm/ess/ic/ic360/mod/template/api/ActivitiesTemplateAPIController": loader "com/ibm/ws/classloader/CompoundClassLoader@f98e3ea0" of class "com/ibm/ess/ic/ic360/mod/template/api/ActivitiesTemplateAPIController" and loader "com/ibm/ws/classloader/CompoundClassLoader@c8e86dd8" of class "com/ibm/ess/ic/ic360/webapp/AbstractIc360Servlet" have different types for the method signature
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1360)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:628)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:597)
	at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1450)
	at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:980)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
	at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1743)
	at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:415)
	at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
	at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:171)
	at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:904)
	at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:789)
	at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:427)
	at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:719)
	at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1211)
	at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1464)
	at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:642)
	at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:1042)
	at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:795)
	at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplicationDynamically(ApplicationMgrImpl.java:1413)
	at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2273)
	at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:436)
	at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
	at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:379)
	at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:127)
	at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$1.run(CompositionUnitMgrImpl.java:654)
	at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5536)
	at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5662)
	at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)
	at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:668)
	at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:612)
	at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1303)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
	at java.lang.reflect.Method.invoke(Method.java:508)
	at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:83)
	at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
	at java.lang.reflect.Method.invoke(Method.java:508)
	at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:287)
	at javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1263)
	at java.security.AccessController.doPrivileged(AccessController.java:664)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:91)
	at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1257)
	at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1096)
	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:831)
	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:813)
	at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1351)
	at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
	at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1244)
	at com.ibm.ws.management.connector.AdminServiceDelegator.invoke(AdminServiceDelegator.java:181)
	at com.ibm.ws.management.connector.ipc.CallRouter.route(CallRouter.java:247)
	at com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink.doWork(IPCConnectorInboundLink.java:360)
	at com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink$IPCConnectorReadCallback.complete(IPCConnectorInboundLink.java:602)
	at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1833)
	at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
	at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
	at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
	at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
	at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
	at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
	at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)

This seems to be the main problem. I tried experimenting with Calls loading in WebSphere but that didn't solve the problem.

Has anybody had a similar problem?

Regards

Florian

Same here with installed Componentpack 7.0.0.2 and CFix 70.2105!

Good to know. Same versions in my environment.

Hi Christoph, was this issue present before applying Cfix and/or CP 7.0.0.2?

Disregard-- I see your response to Andreas. Looks like it did work before Cfix/CP update.

Hi Wes,

I redeployed IC360 7.0.0 (Fullversion) and then the Template editor works without issues. So something from CFix 70.2105 seems to break it, the component pack update for TE is ok.

Regards
Christoph

P.S. delivering these big CFix files with several fixes is a pain in the ... when you want to uninstall single fixes! I would prefer getting single updates, so we can reinstall/uninstall them easier.

P.P.S. @Florian Stahl do you have full IC360 installed? Or just the parts for Cnx7?

@Christoph Stoettner No. Just the parts of Connections 7.

Ok, thanks.

I tried to install the ic360_mod_template.ear from Connections/xkit/ic360 through ISC, but this doesn't fix the issue. When I run the install of the IC360 full package the template editor is working. No idea to be honest why the Websphere update installation is not successful.

Thanks for the information.

I guess we have to wait for HCL to provide a Fix.

Not sure whether this is targeting your issue but here's another thread about issues with Community templates

Sadly not related Andreas, the Template Editor is loading and you can start adding a template, but it generates an Error 500 when you want to save it.

Log message looks like a library is duplicated. Rollback to 7.0.0.1 and removing the mod_template update didn't help in my case.

As an addon, the environment and TE worked before I updated to the latest fixes.

Hi, We were able to isolate the issue. As always, please verify any changes in a test/QA environment before applying to production.

Suggested workaround: In WAS Administration Console, go to Enterprise Applications -> IC360_mod_template -> Class loader, Change WAR class loader policy to Single class loader for application.

We are still determining why/how this was changed with the recent CFix.

Looking forward to your results.

Thanks Wes!

Your solution did work. I can now create templates.

Thank you

Florian

This brings me back to my question or request:

A large CFix without the option to install or uninstall parts of it, is useless. We need a option to install parts (and an option for the application like "news" is not enough, because news contains all ESSAPPS/Addons like Invite, IC360, CEC and so on) of CFixes, or additionally the fixes as seperate packages. Mainly when everybody needs to test updates on their own.

I second this. It would be much more manageable for us admins.

Hi All, Just a short update. CFix.70.2106 will address this issue so no workaround will be needed. The updated CFix list is now online.

Regards,

Wes