views:

27

answers:

1

Hi I am new to Struts 2 and all the java web development, I created a basic struts2 application using maven and then added the struts2-rest-plugin to build my project; here is pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>tutorial</groupId>
 <artifactId>tutorial</artifactId>
 <packaging>war</packaging>
 <version>0.1</version>
 <name>Struts 2 Starter</name>
 <url>http://www.myComp.com&lt;/url&gt;
 <description>Struts 2 Starter</description>

 <dependencies>
  <!-- Junit -->
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>3.8.1</version>
   <scope>test</scope>
  </dependency>

  <!--  Struts 2 -->
  <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>2.1.6</version>
        </dependency>
        <dependency>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-convention-plugin</artifactId>
         <version>2.1.6</version>
        </dependency>
        <dependency>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-rest-plugin</artifactId>
         <version>2.1.6</version>
        </dependency>


  <!-- Servlet & Jsp -->
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.4</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jsp-api</artifactId>
   <version>2.0</version>
   <scope>provided</scope>
  </dependency>

  <!-- Jakarta Commons -->
  <dependency>
   <groupId>commons-fileupload</groupId>
   <artifactId>commons-fileupload</artifactId>
   <version>1.1.1</version>
  </dependency>

  <!-- Dwr -->
  <dependency>
   <groupId>uk.ltd.getahead</groupId>
   <artifactId>dwr</artifactId>
   <version>1.1-beta-3</version>
  </dependency>
    </dependencies>

    <build>
      <finalName>tutorial</finalName>
     <plugins>
      <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                   <source>1.5</source>
                   <target>1.5</target>
                </configuration>
            </plugin>
      <plugin>
       <groupId>org.mortbay.jetty</groupId>
       <artifactId>maven-jetty-plugin</artifactId>
       <version>6.1.5</version>
       <configuration>
        <scanIntervalSeconds>10</scanIntervalSeconds>
       </configuration>
      </plugin>
     </plugins>
    </build>
</project>

the web.xml and struts.xml are as following:

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="starter" version="2.4" 
         xmlns="http://java.sun.com/xml/ns/j2ee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;

 <display-name>Struts 2 - Maven Archetype - Starter</display-name>

 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:applicationContext*.xml</param-value>
 </context-param>

 <!-- Filters -->
    <filter>
        <filter-name>action2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <!-- filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class-->
    </filter>

    <filter-mapping>
        <filter-name>action2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 <!-- Listeners --> 
 <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Welcome file lists -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"&gt;

<struts>

 <constant name="struts.convention.action.suffix" value="Controller"/>
 <constant name="struts.convention.action.mapAllMatches" value="true"/>
 <constant name="struts.convention.default.parent.package" value="rest-default"/>
 <constant name="struts.convention.package.locators" value="example"/>

</struts>

Now I have package org.apache.struts2.rest.example with class OrdersController.java (taken from the struts2-rest-showcase example); running mvn jetty:run and hitting url: http://localhost:8080/tutorial/orders/ results in Error 404;

What's wrong that I am doing?

A: 

Ok guys I found ma problem; maven by default generates a struts.properties file and these two lines are trouble:

struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper struts.action.extension=action

Comment them out and XML would be effective (You investigate the rest of story)

MaX