Webinar: Java EE 7 apps with Vaadin and NetBeans


Live webinar starting at 3PM CEST.

Join Geertjan Wielenga from the Oracle NetBeans team and Matti Tahvonen from Vaadin for a Webinar on how to build a fullstack Vaadin + JPA + Glassfish application in minutes. You’ll learn how to leverage NetBeans and the Vaadin plugin.

Ask questions from Geertjan and Matti in this thread.


Here are some links that you might want to check out before, after or during the webinar:


Webinar starting now! Watch it live above.

Webinar done, watch the parts you missed above and if you have any questions, post them here for Matti to answer tomorrow.

Indeed. This will be my priority task for tomorow. So in case you have related question, even if you already posted it via entry form, please, ask it here.


I understand Geertjan’s view that GUI designers may seem like an unnecessary tool for experienced developers. There are some work environments, though, in which having a GUI designer is indispensable to any level of developer. I’m an experienced Swing developer, but I still use the Netbeans GUI developer a lot, especially when brainstorming a UI in a team environment. Even the non-developers can drag components onto the canvas and do their own design. Without the designer tool, it would take longer to arrive at the “right” design, and as we all know, “time is money”! Just my 2 cents!

Thanks for this webinar, I learned a lot. I’m a long-time Netbeans/Maven user, and I only use Eclipse when I want to quick-prototype a UI using the Vaadin designer. I’m still a newbie in this area.

Thanks again,


We discussed about the Visual Desiner quite a lot during a dinner after the Webinar. And also agreed that it is a handy tool in

  • applications that have lots of editor views
  • when prototyping an app and
  • when getting familiar with a technology like Vaadin.

​For these use cases even a more lightweight visual designer might do its job.

And as said in the Webinar (IIRC) we are planning to start larger renewal for the VD project later this year. There one of the target is better portability, so that we could cover various IDE’s with smaller effort. In case you have improvement suggestions or any other input on the topic, now is a perfect time to fill your wishes to dev.vaadin.com :wink:


Hi Matti
I enjoyed you and Geertjan’s webinar. During the webinar you had shown few maddon templates in Netbeans for entityExpander (table, table with popup etc.). Would you please share those templates.

Hi, sorry I totally forgot that. Here are couple of templates that I have since used to create simple CRUD views. Be sure to use the latest Maddon version as well. There I also suggest to always turn on the eager validation. I should update that into the template as well…

17433.zip (2.98 KB)

Excellent! Thank you so much. This template concept for Vaadin is very exciting to me. I am a new comer to Vaadin originally from Java Swing and spending some time to learn and build my first test project from this startup project and book of vaadin.

Do you recommend any weblink to learn more about these free-marker?

In Maddon, TyppedSelect looks same to ComboBox which is good, but I am wondering if we can have similar propertiesif we compare with Vaadin Combobox e.g. filtering. Thanks for any thoughts.



Hi Mortoza,

I think your question would deserve a separate topic. But anyways, the TypedSelect uses ComboBox (or some other select implementation) behind the scenes so it has pretty much all the same features. At least it supports filtering.


Ok, thank you Matti.



I was following the steps in the Webinar and encountered an error com.vaadin.server.ServiceException java.lang.NullPointerException. I already run out of ideas to solve it. Im using MySQL for my DB.

here’s my persistence.xml

<?xml version="1.0" encoding="UTF-8"?> org.eclipse.persistence.jpa.PersistenceProvider fnc_hris_db com.openhris.entity.Employee com.openhris.entity.EmployeeAddress


Pretty hard to say anything without even seeing the stacktrace. This happens when deploying the applicaiton?


Yeah, here’s the stacktrace.

[glassfish 4.0]
[tid: _ThreadID=22 _ThreadName=http-listener-1(5)]
[timeMillis: 1423647081412]
[levelValue: 900]
: Servlet.service() for servlet MyUIServlet threw exception
at com.openhris.main.MyUI.init(MyUI.java:41)
at com.vaadin.ui.UI.doInit(UI.java:641)
at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:217)
at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:74)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1406)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:305)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:253)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:722)

it points to this code.

    List<Employee> findAll = ef.findAll();
    MTable<Employee> mTable = new MTable<Employee>(Employee.class);

Line 41 is the the first from your code snippet? That means injection of your entity facade fails for some reason. Any other messages in glassfish log earlier? Does it work with the derby provided by Glassfish? Do you have beans.xml available? Which version of Vaadin CDI are you using? If you could share the project e.g. via github it would probably be quite easy to find out the issue.


here’s my project in github. just uploaded. :slight_smile: