论坛首页 Java企业应用论坛

一个配置问题

浏览 8523 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-10-17  
一个配置问题
web.xml如下
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_2.dtd">

<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<web-app>
<display-name>user Application</display-name>
<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</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>

<!--
  - Loads the root application context of this web app at startup,
  - by default from "/WEB-INF/applicationContext.xml".
- Note that it is preferable to use ContextLoaderListener in a servlet container
- that follows the Servlet 2.4 initialization order (most Servlet 2.3 containers do).
-
  - Use WebApplicationContextUtils.getWebApplicationContext(servletContext)
  - to access it anywhere in the web application, outside of the framework.
  -
  - The root context is the parent of all servlet-specific contexts.
  - This means that its beans are automatically available in these child contexts,
  - both for getBean(name) calls and (external) bean references.
-->
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<!--filter-->
<filter>
      <filter-name>encodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <init-param>
        <param-name>encoding</param-name>
        <param-value>GBK</param-value>
      </init-param>
      <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
      </init-param>
 
    </filter>

    <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>*.do</url-pattern>

    </filter-mapping>

<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
    </servlet-mapping>
   
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>logon.jsp</welcome-file>
</welcome-file-list>


<!-- Struts Tag Library Descriptors -->
    <taglib>
      <taglib-uri>/tags/struts-bean</taglib-uri>
      <taglib-location>/WEB-INF/tlds/struts-bean.tld</taglib-location>
    </taglib>

    <taglib>
      <taglib-uri>/tags/struts-html</taglib-uri>
      <taglib-location>/WEB-INF/tlds/struts-html.tld</taglib-location>
    </taglib>

    <taglib>
      <taglib-uri>/tags/struts-logic</taglib-uri>
      <taglib-location>/WEB-INF/tlds/struts-logic.tld</taglib-location>
    </taglib>

    <taglib>
      <taglib-uri>/tags/struts-nested</taglib-uri>
      <taglib-location>/WEB-INF/tlds/struts-nested.tld</taglib-location>
    </taglib>

    <taglib>
      <taglib-uri>/tags/struts-tiles</taglib-uri>
      <taglib-location>/WEB-INF/tlds/struts-tiles.tld</taglib-location>
    </taglib>

<context-param>
      <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext*.xml</param-value> 
      </context-param>

</web-app>

applicationContext-base.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<import resource="applicationContext-action.xml"></import>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property> <!--修改过-->
        <property name="url"><value>jdbc:oracle:thin:@lochost:xxx</value></property>
        <property name="username"><value>lawcase</value></property>
        <property name="password"><value>twtkdrok</value></property>
    </bean>

    <!-- Hibernate SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="dataSource"><ref local="dataSource"/></property>
        <property name="mappingResources">
            <list>
                <value>net\xxx\mywork\user\model\User.hbm.xml</value>
<value>net\xxx\mywork\user\model\Station.hbm.xml</value>
<value>net\xxx\mywork\Tuser.hbm.xml</value>
<value>net\xxx\mywork\Taddress.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop>
            <prop key="hibernate.show_sql">true</prop><!--修改过-->
        </props>
        </property>
    </bean>

    <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>

    <bean id="userDAO" class="net.xxx.mywork.user.dao.UserDaoImp">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>
   
<bean id="stationDao" class="net.xxx.mywork.user.dao.StationDaoImp">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="TUserDao" class="net.xxx.mywork.TUserDaoImp">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>

    <bean id="userManagerTarget" class="net.xxx.mywork.user.service.UserManagerImp">
        <property name="userDAO"><ref local="userDAO"/></property>
    </bean>

    <bean id="userManager"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager"><ref local="transactionManager"/></property>
        <property name="target"><ref local="userManagerTarget"/></property>
        <property name="transactionAttributes">
            <props>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="remove*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>

</beans>

applicationContext-action.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 name="/action/loginAction" class="net.xxx.mywork.action.LoginAction"
singleton="false">
<property name="userManager"><ref bean="userManager" /></property>
<property name="stationDao"><ref bean="stationDao"/></property>

</bean>

<bean name="/action/addStation" class="net.xxx.mywork.action.AddStation"
singleton="false">
<property name="stationDao"><ref bean="stationDao"/></property>
<property name="userDao"><ref bean="TUserDao"/></property>
</bean>


</beans>

报错内容如下:
严重: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/applicationContext-action.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/applicationContext-action.xml]
java.io.FileNotFoundException: Could not open ServletContext resource [/applicationContext-action.xml]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:96)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:144)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:99)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:115)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:83)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:87)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:262)
at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
at org.springframework.web.struts.ContextLoaderPlugIn.createWebApplicationContext(ContextLoaderPlugIn.java:352)
at org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(ContextLoaderPlugIn.java:295)
at org.springframework.web.struts.ContextLoaderPlugIn.init(ContextLoaderPlugIn.java:224)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:839)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:332)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1029)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.addChild(StandardHostDeployer.java:903)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
at org.apache.commons.digester.Rule.end(Rule.java:276)
at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
at org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:76)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1567)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:488)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:863)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:483)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:480)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)

请问我的配置哪里有问题呀,谢谢![/b]
   发表时间:2005-10-17  
你把applicationContext-action.xml放在哪了?
0 请登录后投票
   发表时间:2005-10-17  
和applicationContext-base.xml放在一起,都在/web-inf/目录下,我是一个web项目
0 请登录后投票
   发表时间:2005-10-17  
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>


<import resource="/applicationContext-action.xml"></import>

or

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>


<import resource="/WEB-INF/applicationContext-action.xml"></import>
0 请登录后投票
   发表时间:2005-10-18  
在applicationContext-base.xml去掉
<import resource="applicationContext-action.xml"></import>

直接放在/web-inf/classes根目录下
0 请登录后投票
   发表时间:2005-10-18  
按frogfool兄说的那样做没有成功,按flyjie兄说的那样成功了,最后/web-inf/classess目录下自动生成了一个applicationContext.xml文件,此文件包含了base和action两个文件的内容。
但我还是不解,为什么用import就是不行呢,我试了很多种方法都不行
0 请登录后投票
   发表时间:2005-10-28  
cloud_xzy 写道
按frogfool兄说的那样做没有成功,按flyjie兄说的那样成功了,最后/web-inf/classess目录下自动生成了一个applicationContext.xml文件,此文件包含了base和action两个文件的内容。
但我还是不解,为什么用import就是不行呢,我试了很多种方法都不行


applicationContext.xml可以放在classes下的任何包路径上,例如放在opensource.jack.webwork根目录下,只需在web.xml中指定位置就可以了:

   
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
          classpath:/opensource/jack/webwork/application_context.xml
        </param-value>
    </context-param>
0 请登录后投票
   发表时间:2005-11-08  
总结一下: 据我目前所知的spring有三种方式来创建ApplicationContext.

1、把applicationContext.xml直接放在WEB-INF/classes下,spring会采用默认的加载方式

2、采用在web.xml中配置ContextLoaderListenera或ContextLoaderServlet指定加载路径方式。它们两个有着同样的功能,都实现在了org.springframework.web.context.ContextLoader类,都要定义contextConfigLocation参数。区别在于listener不能在Servlet 2.2兼容的容器中使用。自从Servelt 2.4规范,listener被要求在web应用启动后初始化。web.xml初始化的时候,listerner会检查contextConfigLocation参数。如果不存在的话,它将默认使用/WEB-INF/applicationContext.xml。如果它存在,它就会用预先定义的分隔符(逗号,分号和空格)分开分割字符串(<param-value></param-value),并将这些值作为应用上下文将要搜索的位置。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      /WEB-INF/daoContext.xml,
     /WEB-INF/config/appContext1.xml,
    /WEB-INF/config/appContext2.xml
</param-value>
</context-param>

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

<!-- 另一种是使用ContextLoaderServlet
<servlet>
    <servlet-name>context</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
-->


3 通过ClassPathXmlApplicationContext或XmlWebApplicationContext代码动态加载!
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics