NexJ system architecture overview

The deployed NexJ solution consists of four interactive layers.

The solution model is served by NexJ Model Engine, which is deployed on a Java EE container. The container communicates with the rest of the enterprise system, including databases, web servers, mail servers, and other components.

NexJ Solution Model

The NexJ solution contains one or more NexJ applications, such as NexJ Customer Relationship Management, NexJ Admin Console, and NexJ System Admin Console.

The model defines channels, which are interfaces to resources that will be provided by the model engine, Java EE container, or the entire enterprise system. It also defines data store schemas that will be managed by the model engine, container, or enterprise. The channels and data store schemas are defined without knowing the details of underlying resources the interfaces will be bound to or what underlying stores the schemas will be bound to. The model defines platform-independent application behavior that interacts with channels and data stores.

The metadata for the model is contained in a series of XML files, including the data store definitions and channel definitions used by the application. These metadata files are stored in a single JAR file, which is called nexj-meta-<app>-<version>-<checksum>.jar. Since the solution model is platform independent, the same metadata is used regardless of where and how the application is deployed.

The NexJ solution model is designed in NexJ Studio.

NexJ Model Engine

NexJ Model Engine runs the NexJ application as the runtime interpreter of the NexJ solution model. It is platform-independent and is deployed identically to any supported Java EE container. It implements any channel or data store defined in a model, either directly, or by delegating to the Java EE container.

NexJ Model Engine is an EAR file called nexj-<app>.ear, which contains the following files:
  • One or more NexJ solution models.
  • NexJ Model Engine libraries and third-party libraries.
  • Definitions of the platform-specific interface bindings, for use by the model engine: nexj-env.jar. These bindings are mappings from system resources to channels and data stores.
  • Definitions of the platform-specific interface bindings, for use by the Java EE container: nexj-ejb*.jar, nexj-*.rar, and nexj-web*.war. These bindings describe the available NexJ Model Engine APIs to the Java EE container.

NexJ Model Engine is configured using NexJ Studio.

Java EE Container

The Java EE container deploys NexJ Model Engine. It can be a third-party application server, specifically JBoss Application Server and IBM WebSphere Application Server, and can reside on multiple application servers in a clustered environment. You can also to deploy with NexJ Server, developed by NexJ Systems, instead of a third-party Java EE container.

The Java EE container binds directly to the operating system interfaces and also to enterprise resources, such as database servers. It implements HTTP request handling, including encryption, authentication, and load balancing.

The container provides standard Java class libraries and APIs upon which NexJ Model Engine relies. It also has information about the model engine APIs used by the container.

Other container configuration details include the following:
  • Application-independent container configuration (for example, tuning and security settings).
  • Logging configuration.
  • Credentials needed to access other enterprise servers and resources.
  • Public key certificates required by the application server.
The container must include the following platform-specific libraries, which are custom implementations of container module APIs:
  • nexj-jboss.jar or nexj-websphere.jar
  • nexj-boot.jar

The Java EE container is configured by a combination of NexJ Studio tools, manual configuration, and third-party tools.

Enterprise network

The enterprise network includes additional servers implementing the other tiers of the application, including database servers, HTTP servers, the push redirector, Microsoft Exchange Server, and other third-party servers. It provides all the network peers with which the NexJ application integrates.

These integration points are configured manually or using third-party tools. The connections between these servers and the NexJ application are defined in the channel and data source files created for the NexJ application in NexJ Studio. In addition, you may need to use NexJ Admin Console and NexJ System Admin Console to enable various third-party functionality for NexJ CRM users.