Tomcat WAR deploy without bundled dependencies

I have a perfectly functional application with Eclipse/Ivy, running at Tomcat7, both inside Eclipse (Run on the server) well as deploying (Export WAR file). Everything ok!

But the WAR file is too large, it is taking with him the Ivy (default).

  • Is there how export the WAR file without the dependencies, and manually copy these dependencies to Tomcat->lib directory?

You might have created your project with the old Ivy template that also includes the vaadin-client JAR and its dependencies in the default configuration - those should be for widgetset-compile only. There were some other minor improvements to the Ivy template as well, at least in the plugin on the experimental site (which unfortunately does not show plugins with the grouping option enabled on the Eclipse update install page right now).

If you really want to remove the dependencies from the WAR, Project Properties → Deployment Assembly lets you choose what goes in the WAR.

Very grateful for your attention. We need a lot of help of you, because I convinced the head of the
foundation
here to abandon the JSF in favor of Vaadin. :what:

I updated the Ivy (Apache Ivy update site - http://www.apache.org/dist/ant/ivyde/updatesite) in Eclipse, but when I create a new project he continues with the same dependence (Ivy - default).

Following her second cue (Deployment Assembly …), realy the project is exported without the dependences, but something happens in compiling the classes, and I encounter the following error:

javax.servlet.ServletException: com.vaadin.server.ServiceException: app.view.ApplicationUI could not be loaded
com.vaadin.server.VaadinServlet.handleServiceException(VaadinServlet.java:580)
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:343)
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

The ivy.xml is generated by the Vaadin Eclipse plugin, so that is the one that needs to be updated from the experimental update site (http://vaadin.com/eclipse/experimental) - there will be a release of the plugin soon with the fix and many other changes.

Most likely this is because VaadinServlet is loaded with the server level classloader when in the shared lib directory. Because it is not using the servlet specific classloader, it cannot find the UI class.

The solution is to use a custom subclass of VaadinServlet in your project as the servlet.
Possibly even an empty servlet class inheriting VaadinServlet would work, in Vaadin 6 it was often necessary to override two methods.


Thanks, thanks, thanks
!!! :grin:

The solution of the whole problem and therefore was then: create this class:

public class ApplicationServlet extends com.vaadin.server.VaadinServlet {
  // void
}

establish also in web.xml the …

and on export, disable: Ivy (default) Properties of “Project” → Deployment Assembly