We have successfully deployed Struts app from Forte4J 3 to Tomcat 4.  I
still don't feel that we have a complete understanding of path issues, and
we finally got the links to html help files, which initially worked in the
IDE and not when deployed, to work in both places through trial and error.
We ended up with both JSPs and html files outside WEB-INF.

I'm a relative newbie, but since I've gotten help from this list before and
I don't see other responses to your request, I'll try to answer your q's
inline below:

-----Original Message-----
From: Struts Newsgroup [mailto:@[EMAIL PROTECTED]]
Sent: Wednesday, May 15, 2002 3:40 PM
To: [EMAIL PROTECTED]
Subject: Autodeploying Struts apps from Forte to Tomcat via WARfile --
BROKEN?!?


Subject: Autodeploying Struts apps from Forte to Tomcat via WARfile --
BROKEN?!?
From: "Jeff" <[EMAIL PROTECTED]>
 ===
Has -anybody- ever managed to build a Struts-using web app inside Forte or
Netbeans AND successfully autodeploy the app using a WARfile created by
Forte/Netbeans to a standalone server running Tomcat 4?

** Yes.

I'm ready to throw in the towel and write it off as broken. After three
weeks of on-and-off experimentation and process of elimination, I have yet
to get a warfile-autodeployed Struts app created by Forte to work under
Tomcat. I've tried both path mapping and extension mapping, with a variety
of deployment scenarios, and seem to inevitably wind up with one of three
errors:

- A 403 error because Tomcat didn't properly associate the path with the
Action servlet

ex: /path/* mapped to Action servlet, application deployed to
"$CATALINA_HOME/webapps/path", "/foo" mapped as an Action Path, browser
attempts to launch http://host:8080/path/foo

- A 500 error because Tomcat associated the path with Action servlet, but
wasn't able to find a matching action path in struts-config.xml

ex: /path/* mapped to Action servlet, application deployed to
"$CATALINA_HOME/webapps/path", "/foo" and "/path/foo" mapped as Action
paths, browser attempts to launch http://host:8080/path/foo or
http://host:8080/path/foo.do

- A 500 error because the XML parser couldn't parse struts-config.xml
ex:
application deployed to "$CATALINA_HOME/webapps/path", with "/foo",
"/path/foo", AND "/path/path/foo" mapped as action paths, browser attempts
to launch http://host:8080/path/foo or http://host:8080/path/foo.do

same, but application deployed to $CATALINA_HOME/ROOT

I'm convinced Forte is screwing up somewhere, and it's NOT an XML parser
issue, because the .war files distributed with Struts -do- work and
autodeploy. It's just the web apps autodeployed from Forte-built warfiles
that invariably crash and burn.

Incriminatingly (for Forte) enough, if I unpack the Struts demo apps using
Winzip, delete the META-INF directory, mount the remaining directory into
Forte and build it... I get the same result: it works in Forte's Tomcat, but
crashes and burns upon deployment to a standalone Tomcat.

If you've actually gotten a Struts app built with Forte to autodeploy
successfully...

* did you use path or extension mapping? What value did you use (a snip from
web.xml would be great)

** web.xml snip:
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>application</param-name>
      <param-value>ApplicationResources</param-value>
    </init-param>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>nocache</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

* did you deploy it by dumping the .war file into Tomcat's webapps dir and
letting it autodeploy into a subdirectory of webapps named after the .war
file, or did you have to do something special?

** Nothing special.

* give me a sample URL (http://hostname:8080/...) that worked, along with
its corresponding entry in struts-config.xml (<action... path="/..."). Were
you able to use the same root-relative URL in both Forte and Tomcat? In
other words, did you find some
"/arbirtary_path/path_mapped_to_ActionServlet/path_defined_in_struts-config.
xml" that worked under Forte's built-in Tomcat AND an external Tomcat?

** URL = http://basanizo:8083/<war-file-name with 8083 being the port name
specified in server.xml

** struts-config snip:

  <!-- ========== Action Mapping Definitions ==============================
-->
  <action-mappings type="org.apache.struts.action.ActionMapping">

    <!--
      NAME == form-bean name parameter that gets set in HTTP session
    -->

    <!--  "Path" attribute value in a "forward" is equal to "path" attribute
in an "action" plus ".do",
          or else it equals a forward  -->
  
    <!-- "Reset" doesn't need to be explicitly configured if we want the
default action of
        clearing form and reminaing where you're at to happen -->

    <action path="/SelectOrganization"
type="com.athensgroup.projtrack.controller.org.SelectOrganizationAction"
input="/jsp/Organization/SelectOrganization.jsp" name="orgForm"
scope="session">
        <forward name="edit" path="/EditOrganization.do" redirect="true" />
    </action>

    <action path="/AddOrganization"
type="com.athensgroup.projtrack.controller.org.AddOrganizationAction"
input="/jsp/Organization/AddOrganization.jsp" name="orgForm"
scope="session">
        <forward name="save" path="/AddOrganization.do" redirect="true" />
        <forward name="proceed" path="/AddProgram.do" redirect="true" />
    </action>

    <action path="/EditOrganization"
type="com.athensgroup.projtrack.controller.org.EditOrganizationAction"
input="/jsp/Organization/EditOrganization.jsp" name="orgForm"
scope="session">
        <forward name="save" path="/SelectOrganization.do" redirect="true"
/>
        <forward name="proceed" path="/AddProgram.do" redirect="true" />
    </action>

    <action path="/SelectProgram"
type="com.athensgroup.projtrack.controller.prog.SelectProgramAction"
input="/jsp/Program/SelectProgram.jsp" name="progForm" scope="session">
        <forward name="edit" path="/EditProgram.do" redirect="true" />
        <forward name="add" path="/AddProgram.do" redirect="true" />
    </action>

    <action path="/AddProgram"
type="com.athensgroup.projtrack.controller.prog.AddProgramAction"
input="/jsp/Program/AddProgram.jsp" name="progForm" scope="session">
        <forward name="save" path="/AddProgram.do" redirect="true" />
        <forward name="proceed" path="/AddProject.do" redirect="true" />
    </action>

    <action path="/EditProgram"
type="com.athensgroup.projtrack.controller.prog.EditProgramAction"
input="/jsp/Program/EditProgram.jsp" name="progForm" scope="session">
        <forward name="save" path="/SelectProgram.do" redirect="true" />
        <forward name="proceed" path="/AddProgram.do" redirect="true" />
    </action>

    <action path="/AddProject"
type="com.athensgroup.projtrack.controller.proj.AddProjectAction"
input="/jsp/Project/AddProject.jsp" name="projForm" scope="session">
        <forward name="save" path="/AddProject.do" redirect="true" />
        <forward name="edit" path="/EditDefinition.do" redirect="true"  />
        <forward name="add" path="/AddProgram.do" redirect="true"  />
    </action>
    
    <action path="/SearchProjects" scope="session" name="searchProjForm"
input="/jsp/Project/SearchProjects.jsp"
type="com.athensgroup.projtrack.controller.proj.SearchProjectsAction">
        <forward name="edit" path="/ChangeStatus.do" redirect="true" />
        <forward name="submit" redirect="false"
path="/jsp/Project/SearchProjects.jsp" />
    </action>

    <action path="/EditDefinition"
type="com.athensgroup.projtrack.controller.proj.EditDefinitionAction"
input="/jsp/Project/EditDefinition.jsp" name="projForm" scope="session">
        <forward name="save" path="/EditDefinition.do" redirect="true" />
    </action>

    <action path="/EditProcessGates"
type="com.athensgroup.projtrack.controller.proj.EditProcessGatesAction"
input="/jsp/Project/EditProcessGates.jsp" name="projForm" scope="session">
        <forward name="save" path="/EditProcessGates.do" redirect="true" />
    </action>

    <action path="/EditBudget"
type="com.athensgroup.projtrack.controller.proj.EditBudgetAction"
input="/jsp/Project/EditBudget.jsp" name="projForm" scope="session">
            <forward name="save" path="/EditBudget.do" redirect="true" />
    </action>

    <action path="/EditStaffing"
type="com.athensgroup.projtrack.controller.proj.EditStaffingAction"
input="/jsp/Project/EditStaffing.jsp" name="projForm" scope="session">
        <forward name="add" path="/EditStaffing.do" redirect="true" />
        <forward name="delete" path="/EditStaffing.do" redirect="true" />
    </action>

    <action path="/EditBilling"
type="com.athensgroup.projtrack.controller.proj.EditBillingAction"
input="/jsp/Project/EditBilling.jsp" name="projForm" scope="session">
            <forward name="save" path="/EditBilling.do" redirect="true" />
    </action>

    <action path="/ActivateProject"
type="com.athensgroup.projtrack.controller.proj.ActivateProjectAction"
input="/jsp/Project/ActivateProject.jsp" name="projForm" scope="session">
        <forward name="save" path="/ChangeStatus.do?next_state=active"
redirect="true" />
    </action>

    <action path="/EditAttributes"
type="com.athensgroup.projtrack.controller.proj.EditAttributesAction"
input="/jsp/Project/EditAttributes.jsp" name="projForm" scope="session">
        <forward name="save" path="/EditAttributes.do" redirect="true" />
        <forward name="add" path="/EditAttributes.do" redirect="true" />
        <forward name="delete" path="/EditAttributes.do" redirect="true" />
    </action>
    
    <action path="/CompleteProject"
type="com.athensgroup.projtrack.controller.proj.CompleteProjectAction"
input="/jsp/Project/CompleteProject.jsp" name="projForm" scope="session">
        <forward name="save" path="/ChangeStatus.do?next_state=complete"
redirect="true" />
        <forward name="add" path="/CompleteProject.do" />
        <forward name="delete" path="/CompleteProject.do" />
    </action>

    <action path="/ChangeStatus"
type="com.athensgroup.projtrack.controller.proj.ChangeStatusAction"
input="/jsp/Project/ChangeStatus.jsp" name="projForm" scope="session">
        <forward name="save" path="/ChangeStatus.do" />
    </action>

On the other hand, if you're fairly confident that Forte's warfile creation
is simply broken with respect to Struts apps, I'd like to know that once and
for all too.

Likewise, if somebody has a sample Ant file specific to the task of
deploying a Struts-using app from Forte to Tomcat, I'd love to see it/them,
because I'm pretty sure it's the only way I'm ever going to get it to work
anytime soon.

** Sorry, haven't played with Ant directly yet; intend to . . .


--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to