The Java Emitter Template (JET) is an Eclipse-enabled template engine for
generating applications based on model-driven architecture transformations. By defining an XML file
that describes your module, the JET plug-in for Rational Application Developer (RAD) can generate
the basic WebSphere Commerce service module code for you. Afterward, you can complete the module
by completing your specific business logic to start directly with the service module implementation.
You do not need to spend hours with the setup and configuration of a service
module.
About this task
In this lesson, you use the Java Emitter Template (JET) provided to generate the base code for
your Project service module. The Java code for a WebSphere Commerce service module is abstracted
and generated. You can then focus on implementing the code specific to each service module, for
example, the nouns and the business logic.
Procedure
-
Start WebSphere Commerce Developer.
-
In the Enterprise Explorer view, create the application definition file to create the base code
for the TutorialStore service module.
-
Create the service module input file.
You can store this file in any location within you workspace. As an example, the following
steps create this file within a new
ServiceModuleDefinition directory in the
WebSphereCommerceServerExtensionsLogic project.
- Right-click the WebSphereCommerceServerExtensionsLogic project. Select .
- Enter ServiceModuleDefinition as the folder name. This step creates a
single location to store all service module input files.
- Right-click ServiceModuleDefinition. Select .
- Enter project.xml as the file name and click
Finish.
-
Paste the following application definition into the Source tab of
project.xml:
<_pattern:commerceComponent xmlns:_pattern="http://www.ibm.com/xmlns/prod/commerce/foundation/pattern"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/pattern ../../WC/xml/config/xsd/wc-component-pattern.xsd "
name="Project" packagenameprefix="com.mycompany.commerce" company="myCompany"
namespace="http://www.mycompany.com/xmlns/prod/commerce/9/project" nlsprefix="myprj" type="BOD">
<_pattern:noun name="Project" get="true" process="true" change="true" sync="false">
<_pattern:nounpart name="Material" xpath="/Material" />
<_pattern:nounpart name="Tool" xpath="/Tool[]" />
<_pattern:nounpart name="Instruction" xpath="/Instruction[]" />
<_pattern:nounpart name="Description" xpath="/Description[]" />
<_pattern:nounpart name="CollectionRel" xpath="/Collection[]" />
</_pattern:noun>
<_pattern:noun name="ProjectCollection" get="true" process="true" change="true" sync="false">
<_pattern:nounpart name="Description" xpath="/Description[]" />
</_pattern:noun>
</_pattern:commerceComponent>
Note: The definition indicates the name of the noun (ProjectCollection) and the verbs that are
enabled for the pattern (Get, Process, and Change, but not Sync). This file determines the assets
and code to be generated for you.
-
Save the file.
-
Right-click project.xml. Select .
-
Double-click JET Transformation.
-
In the Transformation section:
- Select the following ID:
- com.ibm.commerce.toolkit.internal.pattern.componentprojects
- Click Apply. Then, click Run.
-
The pattern is applied. In the Navigator view, verify that the following projects are
created:
- Project-Client
- This project contains client-specific code that is used to build requests and handle responses
from the Project Web service.
- Project-DataObjects
- This project holds the XSD file that defines the Project noun and the Service Data Objects
generated from the Project and ProjectCollection nouns.
- Project-Server
- This project contains the server-side business logic for the Project and ProjectCollection
nouns.
- Project-UnitTests
- This project contains ready built unit tests to verify the Project component.
- ProjectServicesHTTPInterface
- This project enables the Project-Server for web services over HTTP.
- ProjectServicesJMSInterface
- This project enables the Project-Server for web services over JMS.
Note: Build errors occur in the projects at this stage because data objects are not yet
generated. Continue the tutorial to generate these objects and resolve the build
errors.
-
Update the WebSphere Commerce project.
When you run the JET pattern tool, the code that is generated by the tool configures your
service module to remove WS binding. By updating the project, you can set local bindings for your
new service module.
-
Right-click the WC project. Select Refresh.
-
Expand .
- Rename wc-component-client.xml to
wc-component-client-J2SEWebService-example.xml
- Rename wc-component-client-local-example.xml to
wc-component-client.xml
-
Change the data source JNDI name:
-
In the Enterprise Explorer view, expand .
-
Right-click ibm-ejb-jar-bnd.xmi; select
Open.
-
Verify that the following
jndiName
values are specified for the attribute
<resRefBindings>
:
-
Update the build dependencies for the service module.
Build dependencies are managed by using the Deployment Assemley instead of the project class
path. After you generate your service module code, you need to add the following build dependencies
to integrate your service module within the existing WebSphere Commerce application.
-
Add the service module to the WebSphere Commerce application.
- Expand WC, right-click WebSphereCommerceServer.
Select Open.
- Click the Design tab to view the Application Deployment Descriptor
Editor.
- Within the Overview section, select Application
(WebSphereCommerceServer). Then, click Add.
- Select Module. Then, click OK.
- Under Module, select Project-Server, then click
Finish.
- Within the Overview section, select Application
(WebSphereCommerceServer). Click Add.
- Select Module. Then, click OK.
- Under Module, select ProjectServicesHTTPInterface, then click
Finish.
- Again within the Overview section, select Application
(WebSphereCommerceServer).
- Under Actions, click . Select Project and click Next.
- Select Project-Client and Project-DataObjects.
Click .
- Save the changes that are made in the Application Deployment Descriptor Editor.
-
Right-click the Project-Server project. Select
Properties.
-
Select Deployment Assembley. Click Add.
-
Select Java Build Path Entries. Click Next.
-
Select the following JAR files and projects:
- Foundation-Core.jar
- Foundation-DataObjects.jar
- Foundation-Extension.jar
- Foundation-Server.jar
- Enablement-BaseComponentsData.jar
Note: It is safe to ignore any warnings that occur during this step.
-
Click .
Results
In this lesson, you used the Java Emitter Template (JET) to generate the base code for
the Project component. Your next task is to generate the data objects that are required to
implement the logical data model of your Project noun. This noun is defined in the
Project.xsd and ProjectCollection.xsd files.