Pentaho Integration (BIComponent) not working on uberJar deployment (possible bug?)

Hi guys,

Just noticed that when I buildWar for my project, the biComponent (pentaho integration) works well but when I buildUberJar, it doesn’t. Server throws an Unknown component: biComponent error.

15:14:27.416 ERROR com.haulmont.cuba.web.log.AppLog        - Exception in com.haulmont.cuba.web.toolkit.ui.CubaButton:
com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method click in com.vaadin.shared.ui.button.ButtonServerRpc
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:160) ~[shared/:na]
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:119) ~[shared/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:444) [shared/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:409) [shared/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274) [shared/:na]
        at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90) [shared/:na]
        at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) [shared/:na]
        at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435) [shared/:na]
        at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:361) [shared/:na]
        at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:324) [classes/:na]
        at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:210) [classes/:na]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [ppm.jar:na]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) [ppm.jar:na]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) [ppm.jar:na]
        at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107) [shared/:na]
        at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73) [shared/:na]
        at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:107) [classes/:na]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [ppm.jar:na]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [ppm.jar:na]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [ppm.jar:na]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) [ppm.jar:na]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) [ppm.jar:na]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [ppm.jar:na]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [ppm.jar:na]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [ppm.jar:na]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [ppm.jar:na]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [ppm.jar:na]
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [ppm.jar:na]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [ppm.jar:na]
        at org.eclipse.jetty.server.Server.handle(Server.java:499) [ppm.jar:na]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) [ppm.jar:na]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258) [ppm.jar:na]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) [ppm.jar:na]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [ppm.jar:na]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [ppm.jar:na]
        at java.lang.Thread.run(Unknown Source) [na:1.8.0_201]
Caused by: java.lang.reflect.InvocationTargetException: null
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_201]
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158) ~[shared/:na]
        ... 35 common frames omitted
Caused by: com.vaadin.event.ListenerMethod$MethodException: Invocation of method buttonClick in com.haulmont.cuba.web.gui.components.WebButton$$Lambda$108/565823599 failed.
        at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:530) ~[shared/:na]
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200) ~[shared/:na]
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163) ~[shared/:na]
        at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037) ~[shared/:na]
        at com.vaadin.ui.Button.fireClick(Button.java:377) ~[shared/:na]
        at com.haulmont.cuba.web.toolkit.ui.CubaButton.fireClick(CubaButton.java:69) ~[classes/:na]
        at com.vaadin.ui.Button$1.click(Button.java:54) ~[shared/:na]
        ... 40 common frames omitted
Caused by: com.haulmont.cuba.gui.GuiDevelopmentException: Unknown component: biComponent
        at com.haulmont.cuba.gui.xml.layout.LayoutLoader.getLoader(LayoutLoader.java:57) ~[classes/:na]
        at com.haulmont.cuba.gui.xml.layout.LayoutLoader.createComponent(LayoutLoader.java:92) ~[classes/:na]
        at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.createSubComponents(ContainerLoader.java:69) ~[classes/:na]
        at com.haulmont.cuba.gui.xml.layout.loaders.VBoxLayoutLoader.createComponent(VBoxLayoutLoader.java:26) ~[classes/:na]
        at com.haulmont.cuba.gui.xml.layout.LayoutLoader.createComponent(LayoutLoader.java:94) ~[classes/:na]
        at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.createSubComponents(ContainerLoader.java:69) ~[classes/:na]
        at com.haulmont.cuba.gui.xml.layout.loaders.WindowLoader.createComponent(WindowLoader.java:49) ~[classes/:na]
        at com.haulmont.cuba.gui.xml.layout.LayoutLoader.createWindow(LayoutLoader.java:102) ~[classes/:na]
        at com.haulmont.cuba.gui.WindowManager.createLayout(WindowManager.java:647) ~[classes/:na]
        at com.haulmont.cuba.gui.WindowManager.createWindow(WindowManager.java:559) ~[classes/:na]
        at com.haulmont.cuba.gui.WindowManager.openWindow(WindowManager.java:750) ~[classes/:na]
        at com.haulmont.cuba.web.WebWindowManager.openWindow(WebWindowManager.java:158) ~[classes/:na]
        at com.haulmont.cuba.gui.components.WindowDelegate.openWindow(WindowDelegate.java:235) ~[classes/:na]
        at com.haulmont.cuba.web.gui.WebWindow.openWindow(WebWindow.java:472) ~[classes/:na]
        at com.haulmont.cuba.gui.components.AbstractFrame.openWindow(AbstractFrame.java:484) ~[classes/:na]
        at com.haulmont.addon.bi.web.bireport.BIReportRun$1.actionPerform(BIReportRun.java:53) ~[classes/:na]
        at com.haulmont.cuba.web.gui.components.WebButton.performAction(WebButton.java:46) ~[classes/:na]
        at com.haulmont.cuba.web.gui.components.WebButton.lambda$new$61446b05$1(WebButton.java:38) ~[classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_201]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_201]
        at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510) ~[shared/:na]
        ... 46 common frames omitted

Possible bug or is there something I’m not doing?

Regards,
Kenince

Hi,
Could you provide file LIB-INF\app\WEB-INF\classes\cuba-ui-component.xml from your uber jar?

Hello Andrey,

See below and attached.cuba-ui-component.xml (670 Bytes)

Regards,
Kenince

There seems to be a bug with uber jar building. AdminTool and BI components define cuba-ui-component.xml files, but only AdminTool UI components are used in the uber jar.

We have created issue: Support uber jar building for app components that defines custom UI components · Issue #97 · cuba-platform/cuba-gradle-plugin · GitHub

Thank you for reporting the problem.