System Architecture

Components

The generators JSF Web-Fragment and JSF Application target three different types of software components (jar and war files):

Component Type Description File Type
Web Fragment This is a component that contains web pages and calls to web services and databases.

It’s packaged as a JEE web fragment.

The generator JSF Web-Fragment writes code for this component.
.jar
Web Fragment Interfaces This is a component that contains interfaces, enumerations and helper classes.

It’s packaged as jar file and doesn’t have any dependencies to other web fragment or web fragment interface components.

One of its purposes is to avoid circular dependencies when a web application contains several web fragment components. You for instance couldn’t build such components with Maven.

Circular Dependencies:
Circular Dependencies
Decoupling:
Decoupling

The generator JSF Web-Fragment writes code for this component.
.jar
Web Application This is a component that represents a web application and can be deployed in a JEE application server.

A web application contains one or more ui web fragment and ui web fragment interface components. The web application contains the application menu and programatical customization for the web pages.

The generator JSF Application writes code for this component.
.war

A web application uses one or more of the web fragment components. A web fragment component contains one or more web pages (mainly represented by XHTML files and Java classes) but doesn’t necessarily use all of them.

Note

Often a web application will use additional generated code to access web services, databases and EJBs. Its not the JSF generators that create that code, though. See here to find more information on useful combinations of generators.

Runtime Libraries

The generated code depends on a few runtime libraries. Dependencies to these libraries have to be set up in your build configuration (e.g. Maven). Some runtime libraries are open source. Two components are not open source and can be accessed via the URL https://maven.virtual-developer.com/repository/gs-3rd-party/:

  • com.gs.gapp.rt.jsf … a component that includes PrimeFaces premium layouts
  • com.gs.gapp.rt.jsf-test … a component that includes general test support for testing web applications with Selenium

The “jsf”-component isn’t open source since it requires a license for a PrimeFaces premium layout. You can purchase such a license from Primtek by using the online store on the PrimeFaces web site.

These open source components can be accessed via the URL https://maven.virtual-developer.com/repository/maven-public/:

  • com.gs.gapp.rt.ejb … a component that includes common parent classes and utility classes to be used in conjunction with generated EJB and DTO classes
  • org.gs.gapp.rt.jsf … a component that includes common parent classes and utility classes to be used in conjunction with generated JSF classes

Component Dependencies

The following picture shows the dependenciesn between the components. These dependencies have to be set up when you configure your build environment.

Web Application Component Dependencies