我创建了一web工程, 开始用struts2+spring2配置, 能正常运行及输出, 在界面输入登陆信息后, 也能跳转到相应的页面. 但在我在把hibernate也加入后, 就出现了上述错误, 在网上找了好多方法都不能解决.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"><struts>
<package name="struts2" extends="struts-default">
<action name="login" class="loginAction" >
<result name="success">/index.jsp</result>
            <result name="input">/login.jsp</result>
</action>
</package>
</struts>LoginAction.javapackage com.test.action;import com.test.bean.LoginServiceBean;public class LoginAction 
{
private static final long serialVersionUID = 1L;
private String username;
private String password;

private LoginServiceBean loginService;

public String execute() throws Exception
{
boolean result = loginService.validate(username, password);
if (result == true)
{
return "success";
}
else
{
return "input";
}
}

public LoginServiceBean getLoginService() 
{
return loginService;
}
public void setLoginService(LoginServiceBean loginService) 
{
this.loginService = loginService;
}
public String getPassword() 
{
return password;
}
public void setPassword(String password) 
{
this.password = password;
}
public String getUsername() 
{
return username;
}
public void setUsername(String username) 
{
this.username = username;
}
}
LoginServiceBean.javapackage com.test.bean;public class LoginServiceBean 
{
/*
     * 我们这只是一个小的例子,不与数据库打交到
     * 若有数据库操作,那么在这个LoginService就是操作具体Dao类实现登录的相关操作
     */
public boolean validate(String username, String password) throws Exception
{
boolean flag = false;

if (! "aaa".equals(username))
{
flag = false;
}
else if (! "123".equals(password))
{
flag = false;
//throw new PasswordException("密码不正确");
}
else
{
flag = true;
}

return flag;
}
}applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
    <bean id="DataSource"
     class="org.apache.commons.dbcp.BasicDataSource">
     <property name="driverClassName"
     value="oracle.jdbc.driver.OracleDriver">
     </property>
     <property name="url"
     value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
     </property>
     <property name="username" value="Gengoo"></property>
     <property name="password" value="111111"></property>
    </bean>
    <bean id="sessionFactory"
     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
     <property name="dataSource">
     <ref bean="DataSource"></ref>
     </property>
     <property name="hibernateProperties">
     <props>
     <prop key="hibernate.dialect">
     org.hibernate.dialect.Oracle9Dialect
     </prop>
     </props>
     </property>
    </bean>     <bean name="loginService" class="com.test.bean.LoginServiceBean"/>
    
    <bean name="loginAction" class="com.test.action.LoginAction">
     <property name="loginService">
     <ref bean="loginService"/>
     </property>
    </bean>
    
</beans>问题是我把web.xml中的
<bean id="DataSource"
     class="org.apache.commons.dbcp.BasicDataSource">
     <property name="driverClassName"
     value="oracle.jdbc.driver.OracleDriver">
     </property>
     <property name="url"
     value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
     </property>
     <property name="username" value="Gengoo"></property>
     <property name="password" value="111111"></property>
    </bean>
    <bean id="sessionFactory"
     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
     <property name="dataSource">
     <ref bean="DataSource"></ref>
     </property>
     <property name="hibernateProperties">
     <props>
     <prop key="hibernate.dialect">
     org.hibernate.dialect.Oracle9Dialect
     </prop>
     </props>
     </property>
    </bean>
这段注销掉后, 发布程序能正常运行, 如果不注销, 就会报错
2009-3-10 0:14:22 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-3-10 0:14:22 org.apache.catalina.core.StandardContext start
严重: Context [/Test2] startup failed due to previous errors
2009-3-10 0:14:23 org.apache.coyote.http11.Http11BaseProtocol start找了很久没有找到解决办法, 希望大牛们给我看看这倒底是怎么回事

解决方案 »

  1.   

    问题是我把web.xml中的<bean id="DataSource"
            class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName"
                value="oracle.jdbc.driver.OracleDriver">
            </property>
            <property name="url"
                value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
            </property>
            <property name="username" value="Gengoo"></property>
            <property name="password" value="111111"></property>
        </bean>
        <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource">
                <ref bean="DataSource"></ref>
            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">
                        org.hibernate.dialect.Oracle9Dialect
                    </prop>
                </props>
            </property>
        </bean>这段注销掉后, 发布程序能正常运行, 如果不注销, 就会报错这是spring中数据源跟hibernate等的配置,这些applicationContext.xml的东西怎么能写到web.xml中呢?是LZ发错了还是确实写错地方了,这种错误我觉得不应该吧顺便贴下你的完整web.xml,最好加个代码框
      

  2.   


    applicationContext.xml是用来管理STRUTS2的里ACTION的 跟他的错误没关系 但你加入HIBERNATE没理由会出错啊 你把主要的问题说说看 大家一起看看
      

  3.   

    那些应该放在applicationContext.xml中,加入后出现问题可能是包冲突导致的,楼主看一下tomcat的log下是否有其他的错误提示
      

  4.   

    不好意思, 昨天晚上昏了头, <bean id="DataSource"
            class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName"
                value="oracle.jdbc.driver.OracleDriver">
            </property>
            <property name="url"
                value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
            </property>
            <property name="username" value="Gengoo"></property>
            <property name="password" value="111111"></property>
        </bean>
        <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource">
                <ref bean="DataSource"></ref>
            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">
                        org.hibernate.dialect.Oracle9Dialect
                    </prop>
                </props>
            </property>
        </bean>这段代码是applicationContext.xml文件内容, 错写成了web.xml文件.下面是web.xml文件内容:<?xml version="1.0" encoding="UTF-8"?>
    <web-app 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">

    <display-name></display-name>

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext*.xml</param-value>
    </context-param>
    <!-- Listeners -->
    <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>


        
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>同时一直很奇怪, 在tomcat/logs/目录下面, 一直都没有日志生成, 不知道是什么原因.
      

  5.   

    把这一段修改一下<listener> 
            <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> 
    </listener> 改成:
    <servlet>
            <servlet-name>SpringContextServlet</servlet-name>
            <servlet-class>
                org.springframework.web.context.ContextLoaderServlet
            </servlet-class>
            <load-on-startup>1</load-on-startup>
    </servlet>
      

  6.   

    楼上的, 我按你的改了, 但还是不行啊:console里面的信息是:2009-3-10 10:00:40 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: G:\eclipse\bin;G:\Tomcat5.5\bin
    2009-3-10 10:00:40 org.apache.coyote.http11.Http11BaseProtocol init
    信息: Initializing Coyote HTTP/1.1 on http-8080
    2009-3-10 10:00:40 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 672 ms
    2009-3-10 10:00:40 org.apache.catalina.core.StandardService start
    信息: Starting service Catalina
    2009-3-10 10:00:41 org.apache.catalina.core.StandardEngine start
    信息: Starting Servlet Engine: Apache Tomcat/5.5.17
    2009-3-10 10:00:41 org.apache.catalina.core.StandardHost start
    信息: XML validation disabled
    2009-3-10 10:00:41 org.apache.catalina.startup.HostConfig deployWAR
    信息: Deploying web application archive sitemesh-example.war
    2009-3-10 10:00:41 org.apache.catalina.core.ApplicationContext log
    信息: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
    2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
    信息: ContextListener: contextInitialized()
    2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
    信息: SessionListener: contextInitialized()
    2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
    信息: ContextListener: contextInitialized()
    2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
    信息: SessionListener: contextInitialized()
    2009-3-10 10:00:44 org.apache.catalina.core.StandardContext start
    严重: Error filterStart
    2009-3-10 10:00:44 org.apache.catalina.core.StandardContext start
    严重: Context [/Test2] startup failed due to previous errors
    2009-3-10 10:00:44 org.apache.coyote.http11.Http11BaseProtocol start
    信息: Starting Coyote HTTP/1.1 on http-8080
    2009-3-10 10:00:45 org.apache.jk.common.ChannelSocket init
    信息: JK: ajp13 listening on /0.0.0.0:8009
    2009-3-10 10:00:45 org.apache.jk.server.JkMain start
    信息: Jk running ID=0 time=0/31  config=null
    2009-3-10 10:00:45 org.apache.catalina.storeconfig.StoreLoader load
    信息: Find registry server-registry.xml at classpath resource
    2009-3-10 10:00:45 org.apache.catalina.startup.Catalina start
    信息: Server startup in 4500 ms
    用log4j打印来的日志信息是:[INFO ] 2009-03-10 10:00:43 Method:com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:140)
    Parsing configuration file [struts-default.xml]
    .[INFO ] 2009-03-10 10:00:44 Method:com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:140)
    Parsing configuration file [struts-plugin.xml]
    .[INFO ] 2009-03-10 10:00:44 Method:com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:140)
    Parsing configuration file [struts.xml]
    .[WARN ] 2009-03-10 10:00:44 Method:org.apache.struts2.config.Settings.getLocale(Settings.java:143)
    Settings: Could not parse struts.locale setting, substituting default VM locale
    .[INFO ] 2009-03-10 10:00:44 Method:org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:185)
    Loading global messages from globalmessages
    .[INFO ] 2009-03-10 10:00:44 Method:org.apache.struts2.spring.StrutsSpringObjectFactory.<init>(StrutsSpringObjectFactory.java:55)
    Initializing Struts-Spring integration...
    .[FATAL] 2009-03-10 10:00:44 Method:org.apache.struts2.spring.StrutsSpringObjectFactory.<init>(StrutsSpringObjectFactory.java:67)
    ********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********
    Looks like the Spring listener was not configured for your web app! 
    Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.
    You might need to add the following to web.xml: 
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    .[ERROR] 2009-03-10 10:00:44 Method:org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3604)
    Exception starting filter struts2
    .java.lang.NullPointerException
    at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:188)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyResultType(XmlConfigurationProvider.java:479)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes(XmlConfigurationProvider.java:450)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:407)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:223)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:304)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:77)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3600)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4193)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
    at org.apache.catalina.core.StandardService.start(StandardService.java:450)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
      

  7.   

    终于没有报错了, 总结原因如下:少了个commons-pool.jar包, 同时本机上的oracle服务没有启动.把这两个问题解决后, 就没有上述错误了
      

  8.   

    你这个错误是端口被占用了啊,你查看下你的那8080端口被什么程序占用了,
    点击"开始"-->"运行"-->"输入netstat -an"查看你的8080端口被占用没