0

struts2 と spring を統合したい。そのため、web-inf/classes フォルダーで次のコードを使用しています。

アプリケーションコンテキスト.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
     <bean id="helloWorldClass" class="com.test.spring.HelloWorld" >
          <property name="message" value="Hello World!" />
     </bean>
     </beans>

struts.xml

    <!DOCTYPE struts PUBLIC 
         "-//Apache Software Foundation//DTD Struts Configuration  2.0//EN"
         "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>    
    <struts-config>
    <!-- Spring Struts plugin -->
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation"
        value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
    </struts-config>
    <constant name="struts.devMode" value="false" />
    <constant name="struts.objectFactory" value="spring" />
    <package name="default" extends="struts-default">
    <action name="helloWorld" class="helloWorldClass">
        <result name="SUCCESS">/success.jsp</result>
    </action>
    </package>
    </struts>

これらのファイルと、パッケージが com.test.spring の helloWorld という 1 つのクラスを使用しました。クラスには可変メッセージの getter/setter メソッドのみが含まれます。

pom.xml ファイルのコンテンツ:

            <repositories>
    <repository>
        <id>jboss-snapshots</id>
        <url>http://snapshots.jboss.org/maven2</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>opensymphony-releases</id>
        <name>Opensymphony Releases</name>
<url>https://oss.sonatype.org/content/repositories/opensymphony-releases</url>
    </repository>
    <repository>
        <id>mvn-adamgent</id>
        <url>http://mvn-adamgent.googlecode.com/svn/maven/release</url>
        <name>Adam Gent Maven Repository</name>
    </repository>

    <repository>
        <id>maven2-repository.dev.java.net</id>
        <name>Java.net Repository for Maven</name>
        <url>http://download.java.net/maven/2/</url>
        <layout>default</layout>
    </repository>

     <repository>
    <id>springsource-milestones</id>
    <name>SpringSource Milestones Proxy</name>
    <url>https://oss.sonatype.org/content/repositories/springsource-milestones</url>
     </repository>      
</repositories> 
     <dependencies>
      <dependency>
         <groupId>junit</groupId>
          <artifactId>junit</artifactId>
           <version>3.8.1</version>
          <scope>test</scope>
       </dependency>    
        <dependency>
      <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.1</version>
        </dependency>   
        <dependency>
          <groupId>org.apache.commons</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>   
        <dependency>
       <groupId>commons-logging</groupId>
 <artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>   
    <dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.13</version>
   </dependency>            
   <dependency>
<groupId>opensymphony</groupId>
<artifactId>ognl</artifactId>
<version>2.6.11</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-core</artifactId>
<version>2.1.6</version>
  </dependency>            
<dependency>
<groupId>com.opensymphony</groupId>
<artifactId>xwork</artifactId>
<version>2.1.2</version>
   </dependency>            
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.1.6</version>
 </dependency>            
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr-runtime</artifactId>
<version>3.1.3</version>
  </dependency>          
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.5.RELEASE</version>
  </dependency>                
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.0.5.RELEASE</version>
 </dependency>            
<!-- Spring framework --> 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.6</version>
</dependency> 
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>2.5.6</version>
</dependency> 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-struts</artifactId>
    <version>2.0.8</version>
</dependency>
     <dependency>
         <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
         <version>2.5.6</version>
       </dependency>
      </dependencies>
    <build>
        <finalName>testspring</finalName>
       </build>
    </project>

このファイルを使用して、ターゲットの web-inf/lib フォルダーに jar ファイルをダウンロードしました。

このwarファイルをglassfishサーバーにアップロードすると、次のエラーメッセージが表示されます。

デプロイ中にエラーが発生しました: アプリの読み込み中に例外が発生しました: java.lang.IllegalStateException: ContainerBase.addChild: 開始: org.apache.catalina.LifecycleException: java.lang.NoClassDefFoundError: クラス org.springframework.web.context.ContextLoader を初期化できませんでした. 詳細については、server.log を参照してください。

このエラーを解決し、struts2 を spring に統合する方法を教えてください。

前もって感謝します。

4

1 に答える 1

0

ContextLoaderPlugin は Struts 1 で使用されます。struts.xml の DOCTYPE から、Struts 2 を使用しています。

ここを参照してください:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/web-integration.html#struts

Struts 2 の場合、Struts2-Spring プラグインを使用する必要があります。

于 2012-10-17T14:21:33.933 に答える