Wiki source code of WO 5.4 Getting Started

Version 44.1 by David Holt on 2008/10/29 12:30

Hide last authors
David Holt 43.1 1 {{toc}}{{/toc}}
Gavin Eadie 23.1 2
David Holt 43.1 3 = Installing WebObjects and WOLips =
David Avendasora 39.1 4
David Holt 43.1 5 Download Xcode 3 from [[ADC>>http://developer.apple.com/leopard/devcenter/]], the WebObjects frameworks are included in this package. You will have to make a custom install and select //WebObjects// in the package list since WebObjects is not part of the default installation.
David Avendasora 39.1 6
David Holt 43.1 7 Install [[Eclipse 3.3.2>>http://download.eclipse.org/eclipse/downloads/drops/R-3.3.2-200802211800/index.php]]
Gavin Eadie 23.1 8
David Holt 43.1 9 [[Install>>WOL:Install WOLips with Eclipse Update Manager]] WOLips from the [[stable>>http://webobjects.mdimension.com/wolips/stable]] build server. ([[nightly>>http://webobjects.mdimension.com/wolips/nightly]] only works with Eclipse 3.4, not recommended yet).
jbrook 41.1 10
David Holt 43.1 11 Start Eclipse and switch to the WOLips perspective. To achieve this, open the //Window// menu, select //Open Perspective// and select //Other...//.
jbrook 41.1 12
David Holt 31.1 13 [[image:PerpectiveMenu.png]]
David Holt 43.1 14
15 In the perspective choices, select //WOLips// and click //Ok//.
16
David Holt 31.1 17 [[image:PerspectiveChoices.png]]
Gavin Eadie 23.1 18
David Holt 31.1 19 If you don't switch to the WOLips perspective, you won't be able to create new WebObjects projects.
Timothy Worman 29.1 20
David Holt 43.1 21 You are now ready to create projects or importing the examples. 
Timothy Worman 29.1 22
David Holt 43.1 23 = Running the examples =
David Avendasora 35.1 24
David Holt 43.1 25 Apple has converted their WebObjects examples in the Eclipse format, but no documentation is provided on how to import them into Eclipse.  The examples are in ///Developer/Examples/JavaWebObjects//.
David Avendasora 35.1 26
David Holt 43.1 27 The first step is: install Eclipse and WOLips :-)  
28
29 Some examples needs Derby, an embedded Java database (OpenBase is not included with WO anymore). To install the databases, you have to do:
30
31 {{code}}
32
33 cd /Developer/Examples/JavaWebObjects/
34 sudo sh installDatabases.sh <yourusername>
35
36 {{/code}}
37
38 Now, you can import the examples into Eclipse. Start Eclipse, select //File// > //Import//,
39
40 [[image:ImportMenu.png]]
41
42 and select //General// > //Existing Projects// into Workplace.
43
44 [[image:ImportGeneral.png]]
45
46 On the next page, select //Select root directory// and browse your disk to ///Developer/Examples/JavaWebObjects//. You should see a list of projects to import.&nbsp; Deselect the second //javaeoutil// project, or else you won't be able to import the projects.
47
48 [[image:ImportProjectsList.png]]
49
50 After the importation is done, you should see the projects in the WO Package Explorer. If you see the projects in Package Explorer (without "WO" in the name), that means that you are using the Java perpective instead of the WOLips perpective.&nbsp; Switch the perpective to WOLips.
51
52 [[image:PackageExplorer.png]]
53
54 Now, you need to fix the examples, because the build path is pointing to the source projects of the WO frameworks, source that nobody outside Apple has access to :-)For each project, right-click on each project, select //Build Path// > //Configure Build Path...//
55
56 [[image:BuildPathMenu.png]]
57
58 Click on the //Projects// tab, select the references to the WO frameworks that have the Warning icon and click //Remove//.
59
60 [[image:ConfigureBuildPath.png]]
61
62 Click on the //Libraries// tab, click the //Add Library// button.&nbsp; Select //WebObjects Frameworks// and click //Next//.
63
64 [[image:AddLibrary.png]]
65
66 Click //System//, open the triangle next to //System// and make sure that //JavaEOAccess//, //JavaEOControl//, //JavaFoundation//, //JavaWebObjects//, //JavaWOExtensions// and //JavaXML// are selected. For //SchoolToolsClient//, you also need to add //JavaWebServicesSupport// and //JavaWebServicesClient// to the build path. For the //SchoolToolsServer//, you need to add //JavaWebServicesSupport//.
67
68 [[image:WOSystemLibs.png]]
69 &nbsp;
70
71 After you corrected the build path on a project, the project will rebuild itself and the errors shoud dissapear.
72
73 //JavaBusinessLogic// and //RelatedLinks// requires Apache Derby, but the path to Derby's JAR is wrong. Remove the JAR from the build path, click //Add External JARs...//, browse your disk up to ///Developer/Examples/JavaWebObjects/Databases/db-derby-10.2.2.0-bin/lib// and select //derby.jar//.&nbsp; The build path should look like this:
74
75 [[image:GoodDerbyPath.png]]
76
77 Voilà&nbsp; You finally can run the examples.&nbsp;
78
David Holt 31.1 79 {{id value="javamonitor"}}{{/id}}
80
David Holt 43.1 81 h1. Running Monitor and wotaskd on Mac OS X 10.5 "client"
David Holt 31.1 82
83 Monitor and wotaskd are installed, but the launchd scripts to start them are not installed. You can grab them from a 10.5 Server installation, or follow those instructions.
84
Gavin Eadie 23.1 85 Make sure //Web Sharing// is enabled in the //Sharing// panel in //System Preferences// (note: 10.5 comes with Apache 2.2 as the default).
86
87 Edit ///etc/apache2/httpd.conf// (if you did a fresh install, you may already have these - search httpd.conf first)
88
David Holt 31.1 89 Search for rewrite//module, and above it, add this line~://
Gavin Eadie 23.1 90
91 {{code}}
92
93 LoadModule WebObjects_module /System/Library/WebObjects/Adaptors/Apache2.2/mod_WebObjects.so
94
95 {{/code}}
96
97 Go to the very end and add:
98
99 {{code}}
100
101 Include /System/Library/WebObjects/Adaptors/Apache2.2/apache.conf
102
103 {{/code}}
104
105 Search for "Directory /" and comment out the Order and Deny lines:
106
107 {{code}}
108
109 <Directory />
110 Options FollowSymLinks
111 AllowOverride None
112 #Order deny,allow
113 #Deny from all
114 </Directory>
115
116 {{/code}}
117
118 Restart apache
119
120 {{code}}
121
122 sudo apachectl graceful
123
124 {{/code}}
125
David Holt 31.1 126 If you run //ps auxw grep httpd// you should see apache now running
Gavin Eadie 23.1 127
128 Create ///Library/LaunchDaemons/com.apple.webobjects.wotaskd.plist// with:
David Holt 31.1 129 (for OSX 10.5 make sure the permissions of this file are 644 system/wheel/everyone otherwise launchctl will throw a "dubious permissions" error when you try to load the plist with the commands that follow)
Gavin Eadie 23.1 130
131 {{code}}
132
133 <?xml version="1.0" encoding="UTF-8"?>
134 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
135 <plist version="1.0">
136 <dict>
137 <key>Disabled</key>
138 <false/>
139 <key>GroupName</key>
140 <string>appserverusr</string>
141 <key>Label</key>
142 <string>com.apple.webobjects.wotaskd</string>
143 <key>OnDemand</key>
144 <false/>
145 <key>Program</key>
146 <string>/System/Library/WebObjects/JavaApplications/wotaskd.woa/wotaskd</string>
147 <key>ProgramArguments</key>
148 <array>
149 <string>wotaskd</string>
150 <string>-WOPort</string>
151 <string>1085</string>
152 </array>
153 <key>ServiceIPC</key>
154 <false/>
155 <key>UserName</key>
156 <string>appserver</string>
157 </dict>
158 </plist>
159
160 {{/code}}
161
162 Create ///Library/LaunchDaemons/com.apple.webobjects.womonitor.plist// with:
David Holt 31.1 163 (for OSX 10.5 make sure the permissions of this file are 644 system/wheel/everyone otherwise launchctl will throw a "dubious permissions" error when you try to load the plist with the commands that follow)
Gavin Eadie 23.1 164
165 {{code}}
166
167 <?xml version="1.0" encoding="UTF-8"?>
168 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
169 <plist version="1.0">
170 <dict>
171 <key>Disabled</key>
172 <false/>
173 <key>GroupName</key>
174 <string>appserverusr</string>
175 <key>Label</key>
176 <string>com.apple.webobjects.womonitor</string>
177 <key>OnDemand</key>
178 <false/>
179 <key>Program</key>
180 <string>/System/Library/WebObjects/JavaApplications/JavaMonitor.woa/JavaMonitor</string>
181 <key>ProgramArguments</key>
182 <array>
183 <string>JavaMonitor</string>
184 <string>-WOPort</string>
185 <string>56789</string>
186 </array>
187 <key>ServiceIPC</key>
188 <false/>
189 <key>UserName</key>
190 <string>appserver</string>
191 </dict>
192 </plist>
193
194 {{/code}}
195
196 Start the launchd daemons :
David Holt 31.1 197 (you may need to sudo here)
Gavin Eadie 23.1 198
199 {{code}}
200
201 launchctl load /Library/LaunchDaemons/com.apple.webobjects.wotaskd.plist
202 launchctl load /Library/LaunchDaemons/com.apple.webobjects.womonitor.plist
203
204 {{/code}}
205
David Holt 31.1 206 If you run "ps auxw grep java" you should see wotaskd and java monitor now running. You should be able to connect to Monitor by this URL:
Gavin Eadie 23.1 207
208 {{code}}
209
210 http://localhost:56789
211
212 {{/code}}
David Holt 43.1 213
214 = Developing with both WebObjects 5.4 and 5.3 =
215
216 (Mike Schrag) The following can be done a couple ways, but this is just how I happened to have things setup in betas, so I kept it (it worked for me):
217
218 Make a ///System/Library/Frameworks/WebObjects54// folder, and move the following frameworks from the 5.4 install into it:
219
220 {{code}}
221
222 JavaDTWGeneration.framework
223 JavaDirectToWeb.framework
224 JavaEOAccess.framework
225 JavaEOApplication.framework
226 JavaEOControl.framework
227 JavaEODistribution.framework
228 JavaEOGeneration.framework
229 JavaEOInterface.framework
230 JavaEOInterfaceCocoa.framework
231 JavaEOInterfaceSwing.framework
232 JavaEOProject.framework
233 JavaEORuleSystem.framework
234 JavaEOTool.framework
235 JavaFoundation.framework
236 JavaJDBCAdaptor.framework
237 JavaJNDIAdaptor.framework
238 JavaWOExtensions.framework
239 JavaWOJSPServlet.framework
240 JavaWebObjects.framework
241 JavaWebServicesClient.framework
242 JavaWebServicesGeneration.framework
243 JavaWebServicesSupport.framework
244 JavaXML.framework
245
246 {{/code}}
247
248 Make a ///System/Library/Frameworks/WebObjects53// folder, and move the following frameworks from your old 5.3 install into it (I tar'd these up from 5.3 before upgrading, but you can download 5.3 and extract these from the pkg, or POSSIBLY install them with the actually installer ... YMMV on that one)
249
250 {{code}}
251
252 JavaDTWGeneration.framework
253 JavaDirectToWeb.framework
254 JavaEOAccess.framework
255 JavaEOApplication.framework
256 JavaEOCocoa.framework
257 JavaEOControl.framework
258 JavaEODistribution.framework
259 JavaEOGeneration.framework
260 JavaEOInterface.framework
261 JavaEOInterfaceCocoa.framework
262 JavaEOInterfaceSwing.framework
263 JavaEOProject.framework
264 JavaEORuleSystem.framework
265 JavaEOTool.framework
266 JavaFoundation.framework
267 JavaJDBCAdaptor.framework
268 JavaJNDIAdaptor.framework
269 JavaWOExtensions.framework
270 JavaWOJSPServlet.framework
271 JavaWebObjects.framework
272 JavaWebServicesClient.framework
273 JavaWebServicesGeneration.framework
274 JavaWebServicesSupport.framework
275 JavaXML.framework
276
277 {{/code}}
278
279 I then use the following two scripts to be able to switch between using 5.3 and 5.4 system wide:
280
281 {{code}}
282
283 bash-3.2# cat wo53
284 for framework in `ls /System/Library/Frameworks/WebObjects53`; do rm /System/Library/Frameworks/$framework; \
285 ln -sf /System/Library/Frameworks/WebObjects53/$framework /System/Library/Frameworks/$framework; done
286 bash-3.2# cat wo54
287 for framework in `ls /System/Library/Frameworks/WebObjects54`; do rm /System/Library/Frameworks/$framework; \
288 ln -sf /System/Library/Frameworks/WebObjects54/$framework /System/Library/Frameworks/$framework; done
289
290 {{/code}}
291
292 At this point, you should have NO WO frameworks in /System/Library/Frameworks they should be in subfolders.
293
294 Now go ahead and run wo53, which should now give you WO 5.3 framework symlinks.
295
296 You may need to do a clean build of your projects in Eclipse If things are setup properly, you should not get any Java errors you didn't already have.
297
298 == Alternative 5.3 / 5.4 development method ==
299
300 The [[^woswitch]] script can be used as an alternative method to installing and using WO 5.3 for development, without the need to touch or move any of the installed WO 5.4 frameworks. This script will download and install the WebObjects 5.3.3 runtime into /Developer/WebObjects53 and maintain two copies of your ,,/Library/wobuild.properties so you can quickly switch WOLips development between the two different runtime versions.,,
301
302 To use the script for the first time, ensure that you have WebObjects 5.4 installed, and have run WOLips at least once to create your ,,/Library/wobuild.properties file. Also ensure that the script has been set executable with ##chmod __x woswitch__##,,
303
304 Then run it like this:
305
306 {{noformat}}
307
308 # ./woswitch.sh 53
309
310 {{/noformat}}
311
312 This can take quite some time the first time as it downloads, extracts and sets the WO 5.3 runtime up. After this is done, switching between the two runtimes is almost instant.
313
314 To switch between the two runtimes, quit WOLips and run
315
316 {{noformat}}
317
318 # ./woswitch.sh 54
319 or
320 # ./woswitch.sh 53
321
322 {{/noformat}}
323
324 Then run WOLips again.
325
326 One thing to remember is that when you are installing frameworks they need to be installed into the appropriate location for the runtime you are targeting. For WO 5.4 you need to install them into ##/Library/WebObjects/Frameworks## and for WO 5.3 they need to go into ##/Developer/WebObjects53/Library/Frameworks##.
327
328 Keep in mind that these changes are specific to WOLips and woproject only. If you run anything outside of WOLips you will also need to manually set ##NEXT//ROOT//##// appropriately.//