cancel
Showing results for 
Search instead for 
Did you mean: 

Is Crystal Server/Report 2016 compatible with WildFly 11 ? or JBoss EAP 7.0 ?

Former Member
0 Kudos

Hi,

I manage to make the small sample CR app deployed onto Tomcat AS 9 but it's not deploying on Wildfly 11 or EAP 7.0 (exact same .war file).

I believe it has the problem with the classloading, especially org.apache.cxf, while Crystal Report has the embedded com/crystaldecisions/thirdparty/com/ooc/OB/ packages in eBus405.jar which conflicts with apache implementation of cxf.

Do you know if Wildfly/JBoss EAP 7.0 is supported ?

Thanks,

D.

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Missed the javax.api in the dependencies module, with help from JBoss forum.

<?xml version="1.0" encoding="UTF-8"?>

<module xmlns="urn:jboss:module:1.3" name="bo.crystalreport">

<resources>

<resource-root path="aspectjrt.jar"/>

...

</resources>

<dependencies>

<module name="org.omg.api"/>

<module name="javax.api"/>

<module name="javax.faces.api"/>

</dependencies>

</module>

Former Member
0 Kudos

UPDATE : Included all the /jar files from $CR2016_HOME/java/lib and copied over to JBoss EAP 7.0/7.1 modules and add that dependencies in my app,

still getting an error. We are currently looking at the another product to replace Crystal Report 2016.

Stack Trace:

java.lang.NoClassDefFoundError: org/ietf/jgss/GSSException
	at com.crystaldecisions.sdk.occa.security.internal.LogonService.userLogon(LogonService.java:211)
	at com.crystaldecisions.sdk.occa.security.internal.SecurityMgr.userLogon(SecurityMgr.java:166)
	at com.crystaldecisions.sdk.framework.internal.SessionMgr.logon_aroundBody0(SessionMgr.java:457)
	at com.crystaldecisions.sdk.framework.internal.SessionMgr.logon_aroundBody1$advice(SessionMgr.java:521)
	at com.crystaldecisions.sdk.framework.internal.SessionMgr.logon(SessionMgr.java:1)
	at com.sanofi.TestServlet.doGet(TestServlet.java:75)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:326)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:812)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.ietf.jgss.GSSException from [Module "bo.crystalreportAll" from local module loader @7006c658 (finder: local module finder @34033bd0 (roots: C:\Programs\jboss-eap-7.1\modules,C:\Programs\jboss-eap-7.1\modules\system\layers\base))]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
	... 47 more
denis_konovalov
Active Contributor
0 Kudos

There are 2 things to consider here - The CR server and BI Platform standard webapps are supported on Tomcat and Jboss and not supported on Wildfly (whatever that might be).
However, your custom webapp should be supportable on whatever webapp server you choose to support it. You wrote it.

Former Member
0 Kudos

Is there a working example of CR2016 with JBoss EAP 7.0 ?

Basically I need to connect to the CM, get the CE session, then load the report by report names, authenticate to BO database, pass the query parameters, then view the managed reports in the viewer.

Something like this,

ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();

// fails at

sessionMgr.logon enterpriseSession = sessionMgr.logon("ceadmin", "password", "ceserver:6400", "secEnterprise");

IInfoStore iStore = (IInfoStore) enterpriseSession.getService("InfoStore");

IInfoObjects reports = iStore.query("Select SI_ID, SI_NAME From CI_INFOOBJECTS Where SI_NAME = 'sample' And SI_INSTANCE = 0");

IInfoObject report = (IInfoObject)reports.get(0);

IReportAppFactory reportAppFactory = (IReportAppFactory) enterpriseSession.getService("RASReportFactory"); ReportClientDocument rcd = reportAppFactory.openDocument(report, OpenReportOptions._openAsReadOnly, java.util.Locale.US);

With JBoss EAP 7.0 that line sessionMgr.logon fails.

Former Member
0 Kudos

Just to add a note, same code above works perfectly with Tomcat AS 9 and Standalone java app.

Just on JBoss EAP 7.0 is not working.

Former Member
0 Kudos