Child pages
  • Packaging WO Applications as true WAR with Maven

To edit or add content to this Wiki, you can simply create a new account at http://wocommunity.org/account.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

If you have used the woapplication-archetype to create your project, jump to the step 3.

You have to follow some instructions to build a true WAR package:

Step 1: Create a web.xml file

You need to create a web.xml file. You can download a simple web.xml file here. Don't forget to change the displayName and the WOMainBundle properties:

<web-app>
   ...
   <display-name>Your Application Name</display-name>
   ...
   <context-param>
      <param-name>WOMainBundle</param-name>
      <param-value>your-app-name</param-value>
   </context-param>
   ...
</web-app>

Step 2: Create/generate an Info.plist file

You also need to create or generate a valid Info.plist file into your resources folder. Here is a sample Info.plist. You have to change the ${your-app-name} and ${package} occurrences with the respective application name and Application class package.

Step 3: Package your classes, resources and webserver resources

The application jar must follow the NSJarBundle format. The NSJarBundle is a package organized in Resources and WebServerResources folders. In addition, the Resources folder must contain a valid Info.plist file. Your application classes, resources and webserver resources must be package as a jar. It is easy to configure Maven to do this:

<build>
   ...
   <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <configuration>
         <archiveClasses>true</archiveClasses>
      </configuration>
   </plugin>
   ...
</build>

Step 4: Add the required dependencies

You must add the following dependency to run the application as a true WAR:

<dependency>
   <groupId>com.apple.webobjects</groupId>
   <artifactId>JavaWOJSPServlet</artifactId>
   <version>${woversion}</version>
</dependency>

NOTE: If you are using WebObjects 5.2.x or 5.3.x you have to add this additional dependency:

<dependency>
   <groupId>com.apple.webobjects</groupId>
   <artifactId>JavaWOJSPServlet_client</artifactId>
   <version>${woversion}</version>
</dependency>

NOTE: if your application uses Wonder, please read this tutorial.

Step 5: Change the packaging type

The default maven-war-plugin can handle the war packaging correctly. You have to change the packaging of your POM to 'war' in order to use this plug-in:

<packaging>war</packaging>

It's done.

Running your application as true WAR

You can use the maven-jetty-plugin to run and test your application.

Step 1: Configure the maven-jetty-plugin

Add the following configuration to your POM:

<build>
   ...
   <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
   </plugin>
   ...
</build>

Step 2: Start the Jetty container with Maven

Just execute:

mvn clean jetty:run-war

Step 3: See the result

Open a browser and type the URL for your application like this: http://locahost:8080/your-app-name/WebObjects/

  • No labels