Clarity

  • 1.  Two Jaspersoft instances in the same server

    Posted Apr 04, 2018 10:09 AM

    Hi All, 

     

     

    I have successfully installed two CA PPM v15.3.0.2.16 instances in the same server, along with their Jaspersoft v6.2.1_5.2.1.4.33, as below (All ports in CA PPM and Jaspersoft Tomcat have been modified to be different within environmetns): 

     

    * Java (v8.0.162) is shared for both PPM instances and both Jaspersoft instances 
    * PPM Instance 1 has it's own tomcat (v8.5.28), and it's own Jaspersoft tomcat (7.0.82), working correctly individually. 
    * PPM Instance 2 has it's own tomcat (v8.5.28), and it's own Jaspersoft tomcat (7.0.82), working correctly individually. 

     

    The problem comes when running both Jaspersoft tomcats at the same time. The first one seems to take ownership and works fine, while the second displays this error: 

     

    Apr 02, 2018 7:12:36 PM org.apache.catalina.loader.WebappClassLoaderBase loadClass INFO: Illegal access: this web application instance has been stopped already. Could not load org.infinispan.util.concurrent.BoundedConcurrentHashMap$Values. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact. java.lang.IllegalStateException at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1777) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) at org.infinispan.util.concurrent.BoundedConcurrentHashMap.values(BoundedConcurrentHashMap.java:2113) at org.infinispan.container.DefaultDataContainer.purgeExpired(DefaultDataContainer.java:189) at org.infinispan.eviction.EvictionManagerImpl.processEviction(EvictionManagerImpl.java:102) at org.infinispan.eviction.EvictionManagerImpl$ScheduledTask.run(EvictionManagerImpl.java:144) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.runAndReset(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 

     

    The expected result is having both PPM and Jaspersoft instances working in parallel, but the second-started Jaspersoft always fails. I checked the NSA and the reporting is not available for the second instance. The jobs related to DWH and Jaspersoft fail, and the Advanced Reporting is not accesible. Any ideas what can be working wrong?

     

    Many thanks, 



  • 2.  Re: Two Jaspersoft instances in the same server

    Broadcom Employee
    Posted Apr 04, 2018 10:25 AM

    What was the port used during installation for Jaspersoft installation or we need to change the server.xml httpconnector port 



  • 3.  Re: Two Jaspersoft instances in the same server

    Posted Apr 04, 2018 10:44 AM

    Agreed - was going to say most likely its the two tomcat instances fighting for the same startup or shutdown port and thats whats causing the issue.

    thats my 2 cents



  • 4.  Re: Two Jaspersoft instances in the same server

    Posted Apr 04, 2018 10:59 AM

    Hi Suman and Israel, 

     

    I modified the server.xml to have different ports in both instances, examples below:

     

    <Server port="8905" shutdown="SHUTDOWN">
    <Server port="8005" shutdown="SHUTDOWN">

     

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8943" URIEncoding="UTF-8" />

    <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

     

    <Connector port="8909" protocol="AJP/1.3" redirectPort="8943" />

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

     

    The only parameter I see in common is the line below:
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

    Any ideas?

     

    Many thanks



  • 5.  Re: Two Jaspersoft instances in the same server

    Broadcom Employee
    Posted Apr 04, 2018 02:10 PM

    Are you using one tomcat for run two jaspersoft? What does catalina.out files say, you will see a port conflict 



  • 6.  Re: Two Jaspersoft instances in the same server

    Posted Apr 05, 2018 04:07 AM

    Hi Suman, 

     

    No, there are 2 different Tomcats for the 2 different Jaspersoft instances. Catalina log error was the one I copied in the original post. However I found another error in [...]\webapps\reportservice\WEB-INF\logs\jasperserver.log.

     

    2018-04-04 12:42:20,397 ERROR EhCacheImpl,localhost-startStop-1:552 [] - -- JasperServer: EhCacheImpl shutdown called. This normal shutdown operation.
    2018-04-04 12:42:20,407 ERROR EhCacheImpl,localhost-startStop-1:555 [] - -- JasperServer: EhCacheImpl calling cleanerTimer.cancel(). This normal shutdown operation.
    2018-04-04 12:42:20,508 ERROR ContextLoader,localhost-startStop-1:331 [] - Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jasperJMXServerConnector' defined in ServletContext resource [/WEB-INF/applicationContext-diagnostic.xml]: Invocation of init method failed; nested exception is java.io.IOException: Cannot bind to URL [rmi://localhost:10990/jasperserver]: javax.naming.NameAlreadyBoundException: jasperserver [Root exception is java.rmi.AlreadyBoundException: jasperserver]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1514)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:618)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:934)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5110)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5633)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1015)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:991)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1296)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2038)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.io.IOException: Cannot bind to URL [rmi://localhost:10990/jasperserver]: javax.naming.NameAlreadyBoundException: jasperserver [Root exception is java.rmi.AlreadyBoundException: jasperserver]
    at javax.management.remote.rmi.RMIConnectorServer.newIOException(Unknown Source)
    at javax.management.remote.rmi.RMIConnectorServer.start(Unknown Source)
    at org.springframework.jmx.support.ConnectorServerFactoryBean.afterPropertiesSet(ConnectorServerFactoryBean.java:187)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1573)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1511)
    ... 25 more
    Caused by: javax.naming.NameAlreadyBoundException: jasperserver [Root exception is java.rmi.AlreadyBoundException: jasperserver]
    at com.sun.jndi.rmi.registry.RegistryContext.bind(Unknown Source)
    at com.sun.jndi.toolkit.url.GenericURLContext.bind(Unknown Source)
    at javax.naming.InitialContext.bind(Unknown Source)
    at javax.management.remote.rmi.RMIConnectorServer.bind(Unknown Source)
    ... 29 more
    Caused by: java.rmi.AlreadyBoundException: jasperserver
    at sun.rmi.registry.RegistryImpl.bind(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
    ... 33 more

     

     

    However, I have searched for that port (10990) in the whole file system and didn't find it.

     


    Regards, 

     

    Fernando



  • 7.  Re: Two Jaspersoft instances in the same server
    Best Answer

    Posted Apr 05, 2018 10:30 AM

    Hi Fernando

    Please check this link in relation to the 10990 port:

     

    NameAlreadyBoundException 10990 | Jaspersoft Community 

     

    Regards

    Eric.



  • 8.  Re: Two Jaspersoft instances in the same server

    Posted Apr 05, 2018 10:44 AM

    That was it 

     

    Steps to fix it:

     

    1) Locate  ile js.diagnostic.properties in : 
        <...>
    \Tomcat x..x ..\reportservice\WEB-INF\

    2) Modify file by chaging default diagnostic port from 10990 to another one.

    3) Delete Jaspersoft Tomcat cache by deleting 
    "Catalina" folder located in:
        <...>
    \Tomcat x..x\Work

    4) Restart Tomcat, and ready

     


    Thanks all!