Version 20.1 by Greg.Brown on 2009/08/02 18:21

Hide last authors
Henrique Prange 8.1 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
Henrique Prange 14.1 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:
Henrique Prange 8.1 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
Henrique Prange 14.1 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.
Henrique Prange 8.1 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 ...
Andrew Lindesay 16.1 36 <plugins>
37 ...
Henrique Prange 8.1 38 <plugin>
39 <artifactId>maven-war-plugin</artifactId>
40 <configuration>
41 <archiveClasses>true</archiveClasses>
42 </configuration>
43 </plugin>
44 ...
Andrew Lindesay 16.1 45 </plugins>
46 ...
Henrique Prange 8.1 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>
Henrique Prange 14.1 58 <groupId>com.webobjects</groupId>
Henrique Prange 8.1 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>
Henrique Prange 14.1 70 <groupId>com.webobjects</groupId>
Henrique Prange 8.1 71 <artifactId>JavaWOJSPServlet_client</artifactId>
72 <version>${woversion}</version>
73 </dependency>
74
75 {{/noformat}}
76
Henrique Prange 10.1 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]].
Henrique Prange 8.1 78
79 == Step 5: Change the packaging type ==
80
Henrique Prange 14.1 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:
Henrique Prange 8.1 82
83 {{noformat}}
84
85 <packaging>war</packaging>
86
87 {{/noformat}}
88
89 It's done.
90
Greg.Brown 18.1 91 {{panel title="2009 Bug Warning" borderStyle="dashed" borderColor="#ccc" titleBGColor="#F7D6C1" bgColor="#FFFFCE"}}
92
93 It should be done, but...
94 The 2.0.17 archetype does not add :
95 {noformat}
96 <resource>
97 <targetPath>Resources</targetPath>
98 <directory>${basedir}/src/main/components</directory>
99 </resource>
Greg.Brown 20.1 100 <resource>
101 <targetPath>WebServerResources</targetPath>
102 <directory>${basedir}/src/main/webserver-resources</directory>
103 </resource>
Greg.Brown 18.1 104 {noformat}
105 to the pom.xml file, so your war will have no components; you should add these lines.
106
Greg.Brown 20.1 107 Also, it does not add a necessary WebObjects 5.3 dependency and, if using Wonder, the ERServlet.jar:
Greg.Brown 18.1 108 {noformat}
109 <dependency>
110 <groupId>${webobjects.groupId}</groupId>
111 <artifactId>JavaWOJSPServlet_client
112 </artifactId>
113 <version>${webobjects.version}</version>
114 </dependency>
Greg.Brown 20.1 115 <dependency>
116 <groupId>wonder.core</groupId>
117 <artifactId>ERServlet</artifactId>
118 <version>1.0</version>
119 </dependency>
Greg.Brown 18.1 120 {noformat}
121 So, you may need to add that.
122
123 In addition, the archetype generated Info.plist needs fixing, as does the web.xml in the WEB-INF folder. There are values in these files like $\{project.artifactId\}, but for now, you must manually replace those values with actual values, e.g, MyProject.
124
125 These probably will be fixed in the next release of plugins, but for now, watch this space, as there may be additional
126 bugs posted here.
127
128
129 {{/panel}}
130
Henrique Prange 8.1 131 = Running your application as true WAR =
132
Henrique Prange 14.1 133 You can use the [[maven-jetty-plugin>>http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin]] to run and test your application.
Henrique Prange 8.1 134
135 == Step 1: Configure the maven-jetty-plugin ==
136
137 Add the following configuration to your POM:
138
139 {{noformat}}
140
141 <build>
142 ...
143 <plugin>
144 <groupId>org.mortbay.jetty</groupId>
145 <artifactId>maven-jetty-plugin</artifactId>
146 </plugin>
147 ...
148 </build>
149
150 {{/noformat}}
151
152 == Step 2: Start the Jetty container with Maven ==
153
154 Just execute:
155
156 {{noformat}}
157
158 mvn clean jetty:run-war
159
160 {{/noformat}}
161
162 == Step 3: See the result ==
163
Henrique Prange 14.1 164 Open a browser and type the URL for your application like this: [[http://locahost:8080/your-app-name/WebObjects/]]