新手弄了好长时间了,问题是这样的,我用hibernate单独的去连数据库没有问题,单独用struts2时class.forname连接数据库时也没有问题,但是当我用struts2转到一个类里面然后用hibernate连数据库时他就一直连不上,而且hibernate执行带下面最后一句话后就不执行了(红色的是控制台输出的,绿色的是网页输出的),弄了一天了,感谢您的帮忙484450 [http-8080-3] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
484450 [http-8080-3] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
484466 [http-8080-3] WARN org.hibernate.util.DTDEntityResolver - recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
484468 [http-8080-3] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : linpeng/cl/User.hbm.xml
484471 [http-8080-3] WARN org.hibernate.util.DTDEntityResolver - recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
484478 [http-8080-3] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
484479 [http-8080-3] INFO org.hibernate.cfg.HbmBinder - Mapping class: linpeng.cl.User -> users
484485 [http-8080-3] INFO org.hibernate.cfg.Configuration - Hibernate Validator not found: ignoring
484536 [http-8080-3] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
484537 [http-8080-3] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
484537 [http-8080-3] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
484537 [http-8080-3] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
484537 [http-8080-3] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.microsoft.sqlserver.jdbc.SQLServerDriver at URL: jdbc:sqlserver://localhost:1433;databaseName=Test
484537 [http-8080-3] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=sa, password=****}

Struts Problem ReportStruts has detected an unhandled exception:Messages:
com.microsoft.jdbc.base.BaseDatabaseMetaData.getDatabaseMajorVersion()I
File: org/hibernate/cfg/SettingsFactory.java
Line number: 116
Stacktracesjava.lang.reflect.InvocationTargetException
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
    java.lang.Thread.run(Thread.java:619)
    
java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.getDatabaseMajorVersion()I
    org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:116)
    org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2901)
    org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2897)
    org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1908)
    linpeng.cl.UserCl.loginCl(UserCl.java:24)
    linpeng.action.LoginAction.execute(LoginAction.java:41)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    

解决方案 »

  1.   

    hibernate.cfg.xml这个文件贴出来我们帮你看看,目前估计是数据库驱动和jar包匹配的问题。
      

  2.   

    首先先谢谢了,下面是我的hibernate.cfg.xml(我单独用hibernate时用java主函数他是对的,可是把struts2和hibernate连在一起时却出错了,控制台不报错只是到 INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=sa, password=****}这句时停止了,网页上报的错是Struts Problem Report
    Struts has detected an unhandled exception)<?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration> <session-factory>
    <property name="dialect">
    org.hibernate.dialect.SQLServerDialect
    </property>
    <property name="connection.url">
    jdbc:sqlserver://localhost:1433;databaseName=Test
    </property>
    <property name="connection.username">sa</property>
    <property name="connection.password">615615</property>
    <property name="connection.driver_class">
    com.microsoft.sqlserver.jdbc.SQLServerDriver
    </property>
    <property name="myeclipse.connection.profile">Test</property>
    <mapping resource="linpeng/cl/User.hbm.xml" /> </session-factory></hibernate-configuration>
      

  3.   


    嗯,是sqljdbc4.jar我用那个jtds也报一样的错
      

  4.   

    484478 [http-8080-3] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null1.你sql里有Test这个数据库么?里面有对应的表么?
    没有的话,建立一个Test数据库,然后在hibernate.cfg.xml里添加一个属性让它自动生成:<prop key="hibernate.hbm2ddl.auto">create</prop>(就这个意思,我用的是spring-hibernate配置所以可能略有不同)。2.你的账号密码确定正确么?数据库访问的权限够么?ps:<property name="connection.password">615615</property>
    胆子真大,下次密码处理下再发
      

  5.   


    先谢谢了,这些都是有的,就是我用这一样的配置不用struts2时他是可以正常运行的
      

  6.   

    按理说struts2只是对jsp跳转控制,和数据库没有半毛钱关系。
    再把你struts.xml文件和对应的action.java贴出来,再帮你看看。
      

  7.   

    <?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>
        <constant name="struts.devMode" value="true"></constant>
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <package name="default" extends="struts-default">
    <action name="test" class="linpeng.action.LoginAction">
        <result name="success">/index.jsp</result>
        <result name="input">/index.jsp</result>
    </action>
    </package>
    </struts>package linpeng.action;import java.io.IOException;import javax.servlet.http.HttpServletResponse;import linpeng.cl.ConnDB;
    import linpeng.cl.UserCl;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{
    public String execute(){
    try {// new ConnDB().getConn();
    if(new UserCl().loginCl("lp", "lp")){
    return SUCCESS;
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return INPUT;
    }}
      

  8.   

    你这action里根本没有test和方法啊,大哥!你可能没理解为什么struts.xml里为什么那么写。
    <action name="test" class="linpeng.action.LoginAction">class指定action的路径,这个你写的对没问题。但前面的name是指调用action中哪个方法。你写的是test,所以action里必须要有test方法。最后,解决方法:execute替换成test
      

  9.   

    楼上不对吧,应该是action中name换成LoginAction这个名字
      

  10.   

    额,那个name是对的吧我不用hibernate是可以的
      

  11.   


    嗯,name是对的,是我弄错了,action的method参数才是表示方法名的,不定义的话默认为execute,不好意思!