Version 16.1 by Andrew Lindesay on 2009/07/23 05:24

Show last authors
1 If you have used the [[woapplication-archetype]] to create your project, jump to the step 3.
2
3 You have to follow some instructions to build a true WAR package:
4
5 == Step 1: Create a web.xml file ==
6
7 You need to create a web.xml file. You can download a simple web.xml file [[here>>^web.xml]]. Don't forget to change the displayName and the WOMainBundle properties:
8
9 {{noformat}}
10
11 <web-app>
12 ...
13 <display-name>Your Application Name</display-name>
14 ...
15 <context-param>
16 <param-name>WOMainBundle</param-name>
17 <param-value>your-app-name</param-value>
18 </context-param>
19 ...
20 </web-app>
21
22 {{/noformat}}
23
24 == Step 2: Create/generate an Info.plist file ==
25
26 You also need to create or generate a valid Info.plist file into your resources folder. [[Here>>^Info.plist]] 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.
27
28 == Step 3: Package your classes, resources and webserver resources ==
29
30 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:
31
32 {{noformat}}
33
34 <build>
35 ...
36 <plugins>
37 ...
38 <plugin>
39 <artifactId>maven-war-plugin</artifactId>
40 <configuration>
41 <archiveClasses>true</archiveClasses>
42 </configuration>
43 </plugin>
44 ...
45 </plugins>
46 ...
47 </build>
48
49 {{/noformat}}
50
51 == Step 4: Add the required dependencies ==
52
53 You must add the following dependency to run the application as a true WAR:
54
55 {{noformat}}
56
57 <dependency>
58 <groupId>com.webobjects</groupId>
59 <artifactId>JavaWOJSPServlet</artifactId>
60 <version>${woversion}</version>
61 </dependency>
62
63 {{/noformat}}
64
65 **NOTE**: If you are using WebObjects 5.2.x or 5.3.x you have to add this additional dependency:
66
67 {{noformat}}
68
69 <dependency>
70 <groupId>com.webobjects</groupId>
71 <artifactId>JavaWOJSPServlet_client</artifactId>
72 <version>${woversion}</version>
73 </dependency>
74
75 {{/noformat}}
76
77 **NOTE**: if your application uses Wonder, please read [[this tutorial>>http://wiki.objectstyle.org/confluence/display/WONDER/Creating+a+wonder+app+to+deploy+as+a+servlet]].
78
79 == Step 5: Change the packaging type ==
80
81 The default [[maven-war-plugin>>http://maven.apache.org/plugins/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:
82
83 {{noformat}}
84
85 <packaging>war</packaging>
86
87 {{/noformat}}
88
89 It's done.
90
91 = Running your application as true WAR =
92
93 You can use the [[maven-jetty-plugin>>http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin]] to run and test your application.
94
95 == Step 1: Configure the maven-jetty-plugin ==
96
97 Add the following configuration to your POM:
98
99 {{noformat}}
100
101 <build>
102 ...
103 <plugin>
104 <groupId>org.mortbay.jetty</groupId>
105 <artifactId>maven-jetty-plugin</artifactId>
106 </plugin>
107 ...
108 </build>
109
110 {{/noformat}}
111
112 == Step 2: Start the Jetty container with Maven ==
113
114 Just execute:
115
116 {{noformat}}
117
118 mvn clean jetty:run-war
119
120 {{/noformat}}
121
122 == Step 3: See the result ==
123
124 Open a browser and type the URL for your application like this: [[http://locahost:8080/your-app-name/WebObjects/]]