Installing Struts with your servlet container
WebSphere Application Server 3.5 and the Example Application
Server: Windows 2000 Server with WebSphere 3.5.3 Advanced
- Start up the adminserver.
- Start up Admin Console.
- Use the Convert War file task to convert the struts-example.war from the struts-b1 distrib as-is.
- Convert to the default_server, default servlet engine and standard install directory (c:\websphere\appserver\hosts\default_host).
- Create a WEB-INF directory in the servlets dir and copy struts-config.xml, database.xml AND web.xml into it (Keep WEB-INF with all the TLD's under web - both WEB-INF directories must be present).
- Copy jaxp 1.0.1's (NOT 1.1.1's) jaxp.jar and parser.jar to the servlets directory of the strut-example webapp.
- In the servlets directory, open struts.jar with WinZip. Extract the three DTD's (struts-config_1_0.dtd, web-app_2_2.dtd and web-app_2_3.dtd) into the servlets directory making sure you use folder names (so the files extract to servlets/org/apache/struts/resources).
- Click on struts-example in the Admin Console under Default Server/Default Servlet Engine and click the advanced tab on the right hand side of the screen.
- Down where it says Default Error Page, enter /ErrorReporter and then click Apply.
- Start the Default Server via the Admin Console. You should see a whole bunch of ActionServlet messages in the default_host_stdout.log file with no exceptions.
- Via a browser accessed the app using http://localhost/struts-example/index.jsp.
- If it returns "Application not Available" then go back to the Admin Console, right-click on struts-example and select Restart WebApp.
- Once it reports success, go back to the URL above and try again - it should work flawlessly.
For whatever reason, some installations do not like XML files that reference PUBLIC DTD's - if in looking at the default_host_stdout.log file you see errors about invalid public URL references during DTD registrations, or if your pages say "cannot find //logon or //saveRegistration (ie. action mappings) then do the following:
- Stop Default Server
- Go to servlets\WEB-INF\ and edit web.xml and struts_config.xml.
- In the DOCTYPE declaration, change the word PUBLIC to SYSTEM and completely remove the line that reads "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" from web.xml and remove "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" from struts-config.xml.
- Save these changes and go back to step 10 above.
Just as a troubleshooting guide -
If you are getting errors like "Cannot find ActionMappings, etc..." or "Cannot find key org.apache.struts.MESSAGE" then your application is most likely still bombing on the struts-config issue that Richard discovered. The above steps SHOULD correct that leaving nothing out. If you are getting 404 errors about //logon or something not found, then you are still having XML config troubles and it is not initializing the Action servlet properly. Follow the steps above in regards to DTD's and it should work.
As a final thought, I obviously haven't gotten to test too much but I don't believe that there are ANY coding changes that need to be made to the actual struts source. Everything about getting it to work in WebSphere has been a WebSphere configuration issue thus far (and I don't think I'll be having any more).
If changing the DTD's to SYSTEM, do so ONLY AFTER using the Convert a War util. Ant doesn't seem to like it the other way! :)
Back to Installation