Pivot4J, how to build it

581 views
Skip to first unread message

tecbea

unread,
Aug 24, 2014, 5:53:28 PM8/24/14
to pivot4...@googlegroups.com
Hi,
i decide to see how i can help with pivot4j.

1st thing is to build it.
check this blog post.
http://lunasuavis.blogspot.com/2014/08/pivot4j-how-to-build-it.html

next, ...

(Xavier any issue please say so)


regards,
tecbea

Xavier Cho

unread,
Aug 25, 2014, 8:57:01 AM8/25/14
to pivot4...@googlegroups.com
Hi Tecbea,

Welcome aboard! And yes, I agree that setting up the build environment would be the
logical first step toward contributing to the project.

Actually, I'm using Ubuntu myself and have a very similar environment except for the fact
that I installed maven via apt-get which won't make any real difference.

I'd like to suggest trying to load the project into your favorite IDE and run the project
(pivot4j-analytics) inside it in debug mode.

I use Eclipse + Maven plugin as described in page below :
It's a bit old, so you may encounter some difficulties following the instruction.
In that case, please let me know and I'll try to guide you through the necessary steps.

As to the possible opportunities for contribution, there's plenty. I've recently been
moved to a non BI related work and code in Scala instead of Java. So there are lot
of things that were planned but has been put on hold due to lack of development time.

I'll just list a few items that come to my mind :
  • More integration test coverage
  • Better documentation (esp, on such features like conditional formatting)
  • Saner implementation of TableRenderer (it has often caused performance problems)
  • Switch parser implementation to the one from Mondrian/Olap4J
  • Better Pentaho CDE integration
  • Some API layer for user/permission management to help integration
  • Separate REST backend to enable easier Javascript integration
You can also browse through the issue list at the GitHub project page to see other tasks which I
failed to mention above.

If you have any questions, please feel free to ask and I'll be more than happy to help.

Thanks for considering to help!

Regards,
Xavier

2014년 8월 25일 월요일 오전 6시 53분 28초 UTC+9, tecbea 님의 말:

tecbea

unread,
Aug 25, 2014, 4:50:07 PM8/25/14
to pivot4...@googlegroups.com
Hi Xavier,
what app server you use ?
Jboss ? wildfly? tomcat?

tecbea

Xavier Cho

unread,
Aug 25, 2014, 11:46:52 PM8/25/14
to pivot4...@googlegroups.com
Hi,

I use Tomcat most of the times. Theoretically, it would run in any servlet container with proper configuration.

In practice, many full stack application servers bundle their own implementation of JSF which complicates the setup sometimes. There are couple of such problems reported in the issue list, so you might want to refer to them if you want to try such products.

Cheers,
Xavier

2014년 8월 26일 화요일 오전 5시 50분 7초 UTC+9, tecbea 님의 말:

talk...@gmail.com

unread,
Sep 11, 2014, 11:23:02 AM9/11/14
to pivot4...@googlegroups.com
Hi tecbea ,
thank you for detailed instructions, I installed successfully !
but now I wanna open the tool via localhost:8080, it does not open,
I am new in this area
Could u please tell me what is wrong ?

Xavier Cho

unread,
Sep 11, 2014, 9:47:39 PM9/11/14
to pivot4...@googlegroups.com, talk...@gmail.com
Hi,

When you successfully deploy the application, it can be accessed from http://localhost:8080/pivot4j (in case of Tomcat which uses 8080 as the default port, and when the name of the archive to be pivot4j.war).

In case something went wrong, you should be able to see the detailed message in the log file of the Servlet container, or in your browser.

So, please check if the application was deployed successfully and see if there's an error messages in the log file first.

Cheers,
Xavier

2014년 9월 12일 금요일 오전 12시 23분 2초 UTC+9, talk...@gmail.com 님의 말:

talk...@gmail.com

unread,
Sep 12, 2014, 11:49:30 AM9/12/14
to pivot4...@googlegroups.com, talk...@gmail.com
Dear Xavier,

Thank you so much for ur reply,
I've had a hard time to install pivot4j Analytics regarding lack of knowledge, so I describe u about steps in details :
Firstly I tried to install Mondrian as a prerequisite for Pivot4j, but the last version of Mondrian and installation guide did not match, so I gave up
I found Tebea's weblog post, so I followed, then, in the middle I found that I should install tomcat6 too, so I did this step before all mentioned steps in his blog, (http://lunasuavis.blogspot.ca/2014/08/pivot4j-how-to-build-it.html)
I checked my installation, I got this :
INFO] Reactor Summary:
[INFO]
[INFO] Pivot4J ............................................ SUCCESS [ 0.566 s]
[INFO] Pivot4J Core ....................................... SUCCESS [02:01 min]
[INFO] Pivot4J Analytics .................................. SUCCESS [ 38.479 s]
[INFO] Pivot4J Pentaho .................................... SUCCESS [ 17.466 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

the port of tomcat is 8080, url should be http://localhost:8080/pivot4j-analytics-0.9/
I checked catalina.out for logs
I have this error :

12:23:23.052 INFO [LocalFileSystemRepository] - Root repository path : /usr/share/tomcat6/.pivot4j/repository
12:23:23.053 ERROR [Pivot4JExceptionHandler] - Unhandled exception has occurred
javax.faces.FacesException: java.lang.reflect.InvocationTargetException
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:223) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:333) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:296) ~[myfaces-impl-2.2.0.jar:2.2.0]
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) ~[el-api-2.1.jar:2.1.FR]
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:179) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69) ~[jasper-el-6.0.35.jar:6.0.35]
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) ~[jasper-el-6.0.35.jar:6.0.35]
at org.apache.myfaces.el.convert.ValueExpressionToValueBinding.getValue(ValueExpressionToValueBinding.java:173) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.impl.digester.elements.ManagedPropertyImpl.getRuntimeValue(ManagedPropertyImpl.java:119) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(ManagedBeanBuilder.java:325) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:163) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:333) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:296) ~[myfaces-impl-2.2.0.jar:2.2.0]
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) ~[el-api-2.1.jar:2.1.FR]
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:179) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69) ~[jasper-el-6.0.35.jar:6.0.35]
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) ~[jasper-el-6.0.35.jar:6.0.35]
at org.apache.myfaces.el.convert.ValueExpressionToValueBinding.getValue(ValueExpressionToValueBinding.java:173) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.impl.digester.elements.ManagedPropertyImpl.getRuntimeValue(ManagedPropertyImpl.java:119) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.ManagedBeanBuilder.initializeProperties(ManagedBeanBuilder.java:325) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:163) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:333) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:296) ~[myfaces-impl-2.2.0.jar:2.2.0]
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) ~[el-api-2.1.jar:2.1.FR]
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:179) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69) ~[jasper-el-6.0.35.jar:6.0.35]
at org.apache.el.parser.AstValue.getValue(AstValue.java:112) ~[jasper-el-6.0.35.jar:6.0.35]
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) ~[jasper-el-6.0.35.jar:6.0.35]
at org.primefaces.renderkit.HeadRenderer.encodeBegin(HeadRenderer.java:65) ~[primefaces-4.0.jar:4.0]
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:596) ~[myfaces-api-2.2.0.jar:2.2.0]
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:526) ~[myfaces-api-2.2.0.jar:2.2.0]
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:550) ~[myfaces-api-2.2.0.jar:2.2.0]
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1891) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:313) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:267) [myfaces-impl-2.2.0.jar:2.2.0]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) [myfaces-api-2.2.0.jar:2.2.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina-6.0.35.jar:6.0.35]
at org.apache.logging.log4j.core.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:66) [log4j-core-2.0-beta9.jar:2.0-beta9]
at org.pivot4j.analytics.logging.Log4jServletFilterFallback.doFilter(Log4jServletFilterFallback.java:49) [Log4jServletFilterFallback.class:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina-6.0.35.jar:6.0.35]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) [catalina-6.0.35.jar:6.0.35]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) [tomcat-coyote-6.0.35.jar:6.0.35]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) [tomcat-coyote-6.0.35.jar:6.0.35]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote-6.0.35.jar:6.0.35]
at java.lang.Thread.run(Thread.java:745) [?:1.7.0_65]
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_65]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_65]
at org.apache.catalina.util.DefaultAnnotationProcessor.postConstruct(DefaultAnnotationProcessor.java:96) ~[catalina-6.0.35.jar:6.0.35]
at org.apache.myfaces.config.annotation.TomcatAnnotationLifecycleProvider.postConstruct(TomcatAnnotationLifecycleProvider.java:90) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:213) ~[myfaces-impl-2.2.0.jar:2.2.0]
... 52 more
Caused by: javax.faces.FacesException: java.io.IOException: Creating repository direcoty failed with unknown reason : /usr/share/tomcat6/.pivot4j/repository
at org.pivot4j.analytics.repository.file.LocalFileSystemRepository.initialize(LocalFileSystemRepository.java:63) ~[LocalFileSystemRepository.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_65]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_65]
at org.apache.catalina.util.DefaultAnnotationProcessor.postConstruct(DefaultAnnotationProcessor.java:96) ~[catalina-6.0.35.jar:6.0.35]
at org.apache.myfaces.config.annotation.TomcatAnnotationLifecycleProvider.postConstruct(TomcatAnnotationLifecycleProvider.java:90) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:213) ~[myfaces-impl-2.2.0.jar:2.2.0]
... 52 more
Caused by: java.io.IOException: Creating repository direcoty failed with unknown reason : /usr/share/tomcat6/.pivot4j/repository
at org.pivot4j.analytics.repository.file.LocalFileSystemRepository.initialize(LocalFileSystemRepository.java:56) ~[LocalFileSystemRepository.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_65]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_65]
at org.apache.catalina.util.DefaultAnnotationProcessor.postConstruct(DefaultAnnotationProcessor.java:96) ~[catalina-6.0.35.jar:6.0.35]
at org.apache.myfaces.config.annotation.TomcatAnnotationLifecycleProvider.postConstruct(TomcatAnnotationLifecycleProvider.java:90) ~[myfaces-impl-2.2.0.jar:2.2.0]
at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:213) ~[myfaces-impl-2.2.0.jar:2.2.0]
... 52 more

Xavier Cho

unread,
Sep 13, 2014, 9:54:15 PM9/13/14
to pivot4...@googlegroups.com, talk...@gmail.com
Hi,

If you want to develop Pivot4J, you won't need separate installation of Mondrian, as the project bundles its own version of the library with the sample FoodMart database.

I suspect the error was caused by insufficient permission on /usr/share/tomcat6/.pivot4j, however, I'd recommend to setup a local development environment to minimize the build/deployment overhead.

If you use Eclipse, you can setup the project to deploy on your local Tomcat installation which is managed by Eclipse WST. That way, you won't have to rebuild every time you change something. And also it'd make debugging much easier, as you can run the server in a debug mode with hot swapping enabled.

Hope this helps!

Cheers,
Xavier

2014년 9월 13일 토요일 오전 12시 49분 30초 UTC+9, talk...@gmail.com 님의 말:

talk...@gmail.com

unread,
Sep 16, 2014, 12:50:30 PM9/16/14
to pivot4...@googlegroups.com, talk...@gmail.com
Dear Xavier,
U were right, problem was about privilege of that path
Thank u so much
Regards
Mina

qasim.v...@gmail.com

unread,
Jun 8, 2017, 6:54:16 AM6/8/17
to pivot4j-list, talk...@gmail.com
Hi Xavier, I don't know how to configure Pivot4J with Pentaho data analytics.
Could you please help me in this regard.

Regards,
Qasim

Xavier Cho

unread,
Jun 18, 2017, 5:49:12 AM6/18/17
to pivot4j-list, talk...@gmail.com, qasim.v...@gmail.com
Hi Qasim,

Sorry for the late response. Pivot4J should automatically pick up configured OLAP(Mondrian) data sources that exist on the platform.

You might want to read the official documentation for more detailed instruction:
Hope this helps!

Cheers,
Xavier

2017년 6월 8일 목요일 오후 7시 54분 16초 UTC+9, qasim.v...@gmail.com 님의 말:

hnta...@gmail.com

unread,
Jul 30, 2017, 6:25:35 PM7/30/17
to pivot4j-list
Thank you, it's very helpful
Reply all
Reply to author
Forward
0 new messages