启动工程,报以下错误:
严重: Error configuring application listener of class com.ucayee.javaapp.pub.Mylistener
java.lang.ExceptionInInitializerError
at com.ucayee.javaapp.pub.SysProperty.load(SysProperty.java:70)
at com.ucayee.javaapp.pub.SysProperty.reload(SysProperty.java:112)
at com.ucayee.javaapp.pub.SysProperty.<clinit>(SysProperty.java:61)
at com.ecayee.util.InterUtil.<clinit>(InterUtil.java:9)
at com.ucayee.javaapp.pub.Mylistener.<init>(Mylistener.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3774)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
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:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: mySQLVOPU] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at com.ucayee.javaapp.pub.HUtil.<clinit>(HUtil.java:95)
... 26 more
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 30 more
可能是方言的问题,但是我在配置文件找到了这句<non-jta-data-source>java:comp/env/jdbc/myDS</non-jta-data-source>,一查说是“这句// 设置数据库方言,默认去找tomcat数据源”那我错在哪呢
persistence.xml文件
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
     <persistence-unit name="mySQLVOPU" transaction-type="RESOURCE_LOCAL">
   
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
 
    <non-jta-data-source>java:comp/env/jdbc/myDS</non-jta-data-source>
  
      
     <class>com.ucayee.javaapp.vo.NewsPoint</class>
          <class>com.ucayee.javaapp.vo.NewsComment</class>
    
          <class>com.ucayee.javaapp.vo.MainKey</class>  
          
          <class>com.ucayee.javaapp.vo.NewsContenttitle</class>
             <class>com.ucayee.javaapp.vo.NewsQuestion</class>
             
           <class>com.ucayee.javaapp.vo.NewsNewsQuestion</class>
           <class>com.ucayee.javaapp.vo.NewsNewsQuestionPK</class>  
          <class>com.ucayee.javaapp.vo.NewsBX</class> 
       <class>com.ucayee.javaapp.vo.NewsExtendsFirstchannel</class>
       <class>com.ucayee.javaapp.vo.NewsExtendsChannelAds</class>
       <class>com.ucayee.javaapp.vo.NewsExtendsFirstchannelButtons</class>
           <class>com.ucayee.javaapp.vo.NewsExtendsFirstchannelChannels</class>
              
          <class>com.ucayee.javaapp.vo.NewsExtendsChannel</class>         
    <class>com.ucayee.javaapp.vo.NewsExtendsChannelTitle</class> 
      
    <class>com.ucayee.javaapp.vo.NewsCatlog</class>
     <class>com.ucayee.javaapp.vo.NewsCatlogPlatform</class>
    
    <class>com.ucayee.javaapp.vo.NewsClientinfo</class>
    <class>com.ucayee.javaapp.vo.NewsClientsoftupdaterule</class>
    <class>com.ucayee.javaapp.vo.NewsClientsoftupdaterulePK</class>    <class>com.ucayee.javaapp.vo.NewsQuestionAnswer</class>
    <class>com.ucayee.javaapp.vo.NewsResources</class>
    <class>com.ucayee.javaapp.vo.NewsUserorder</class>   
     <class>com.ucayee.javaapp.vo.NewsMtvrule</class>   
    <class>com.ucayee.javaapp.vo.NewsContenttype</class>   
    <class>com.ucayee.javaapp.vo.NewsAds</class>
    <class>com.ucayee.javaapp.vo.NewsButtons</class>
    <class>com.ucayee.javaapp.vo.SongChannelsongs</class>
    <class>com.ucayee.javaapp.vo.TUserChannels</class>      
          
         
          
    <class>com.ucayee.javaapp.vo.TApplicationContent</class>   
    <class>com.ucayee.javaapp.vo.TAreainfo</class>  
    <class>com.ucayee.javaapp.vo.TAuditcontents</class>    
    <class>com.ucayee.javaapp.vo.TChannels</class>  
    <class>com.ucayee.javaapp.vo.TChannelversions</class>   
    <class>com.ucayee.javaapp.vo.TContents</class>   
    <class>com.ucayee.javaapp.vo.TChannelcontents</class>   
    
    <class>com.ucayee.javaapp.vo.TEmployee</class>   
    
    <class>com.ucayee.javaapp.vo.TSysSysparam</class> 
     <class>com.ucayee.javaapp.vo.TSysAutoactivetimer</class> 
     
   <class>com.ucayee.javaapp.vo.Fordemo</class> 
    
    
    <class>com.ucayee.javaapp.vo.TMainmenus</class>   
    <class>com.ucayee.javaapp.vo.TMobileCompanyInfo</class>   
    <class>com.ucayee.javaapp.vo.TPhonenoseg</class>    
    <class>com.ucayee.javaapp.vo.TResources</class>   
    <class>com.ucayee.javaapp.vo.TRoles</class>   
    <class>com.ucayee.javaapp.vo.TServiceInfo</class>    
    <class>com.ucayee.javaapp.vo.TSpcode</class>    
    <class>com.ucayee.javaapp.vo.TSubmenus</class>    
    <class>com.ucayee.javaapp.vo.TTerminalInfo</class>   
     <class>com.ucayee.javaapp.vo.TUagroups</class>   
     
    <class>com.ucayee.javaapp.vo.TUaClass</class>    
   <class>com.ucayee.javaapp.vo.TGenre</class>  
    <class>com.ucayee.javaapp.vo.TUser</class>   
    <class>com.ucayee.javaapp.vo.TUserGroup</class>  
    <class>com.ucayee.javaapp.vo.TUseragents</class>   
    <class>com.ucayee.javaapp.vo.TVersionChannels</class>    
    <class>com.ucayee.javaapp.vo.TClientuser</class>
    <class>com.ucayee.javaapp.vo.TAreainfo</class>
    <class>com.ucayee.javaapp.vo.TUserOrder</class>    
    <class>com.ucayee.javaapp.vo.TSubject</class>
    <class>com.ucayee.javaapp.vo.TSubjectResources</class>  
    <class>com.ucayee.javaapp.vo.TEbookContent</class>
    <class>com.ucayee.javaapp.vo.TEbookSection</class>  
    <class>com.ucayee.javaapp.vo.TEbookResource</class>
    <class>com.ucayee.javaapp.vo.TChannelEbook</class>  
    <class>com.ucayee.javaapp.vo.TResourcedelete</class>   
    
       <class>com.ucayee.javaapp.vo.SongAlbums</class>
    <class>com.ucayee.javaapp.vo.SongAlbumsongs</class>
    <class>com.ucayee.javaapp.vo.SongArtistalbums</class>
    <class>com.ucayee.javaapp.vo.SongArtists</class>
    <class>com.ucayee.javaapp.vo.SongPublishers</class>
    <class>com.ucayee.javaapp.vo.SongRbtSong</class>
    <class>com.ucayee.javaapp.vo.SongRbtsongs</class>
    <class>com.ucayee.javaapp.vo.SongRingtones</class>
    <class>com.ucayee.javaapp.vo.SongSongs</class>
    <class>com.ucayee.javaapp.vo.SongSpsongs</class>
    <class>com.ucayee.javaapp.vo.SongTerritoryclearances</class>
    <class>com.ucayee.javaapp.vo.SongToneSong</class>
    
      <class>com.ucayee.javaapp.vo.VideoAuditinfo</class>
    <class>com.ucayee.javaapp.vo.VideoContentinfo</class>
    <class>com.ucayee.javaapp.vo.VideoResource</class>
    <class>com.ucayee.javaapp.vo.NewsSystempopumsg</class>
    <class>com.ucayee.javaapp.vo.TWeatherdetail</class>
    
    <class>com.ucayee.javaapp.vo.NewsAccesslog</class>
    <class>com.ucayee.javaapp.vo.NewsTjMenber</class>
    <class>com.ucayee.javaapp.vo.NewsTjMenberPK</class>
    <class>com.ucayee.javaapp.vo.ClientComments</class>
    <class>com.ucayee.javaapp.vo.NewsBlacklist</class>
    <class>com.ucayee.javaapp.vo.NewsPlatforminfo</class>
    <class>com.ucayee.javaapp.vo.NewsGroup</class>
    <class>com.ucayee.javaapp.vo.NewsGroupuserset</class>
    <class>com.ucayee.javaapp.vo.NewsUserupload</class>
    <class>com.ucayee.javaapp.vo.NewsClientcontrol</class>
    <class>com.ucayee.javaapp.vo.NewsClientcontrolone</class>
    <class>com.ucayee.javaapp.vo.NewsRssChannelPK</class>
    <class>com.ucayee.javaapp.vo.NewsRssChannel</class>
    <class>com.ucayee.javaapp.vo.TDeviceExtend</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
   
  
  </persistence-unit>
</persistence>

解决方案 »

  1.   

    tomcat 能支持 EJB?? 
    这个不管了。这个 java:comp/env/jdbc/myDS  在哪。。
    comp/env/jdbc/myDS 是一个JNDI Name
    似乎 在这里面是需要在前面在加一个 /的
    比如我的 JNDIName 叫  SystemDB
    那么这里应该是
    <non-jta-data-source>java:/SystemDB</non-jta-data-source>所以 这里 comp/env/jdbc/myDS 你应该确认下,首先是否有这个玩意儿的 dataSource
      

  2.   

    com.ucayee.javaapp.pub.Mylistener这个类贴出来看看。
      

  3.   

    java:comp/env/jdbc/myDS  这个是配在tomcat中的  。下面试配在tomcat中的数据源:
    <Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource"
                   maxActive="100" maxIdle="30" maxWait="10000"
                   username="root" password="" driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://211.144.32.240:3306/demo?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
    Mylistener.java如下:public class Mylistener implements ServletContextListener, HttpSessionListener,
    ServletContextAttributeListener { /**
     * Constructor of the object.
     */
    private int count;
    private ServletContext context = null; public Mylistener() {
    super();
    count = 0; if (System.getProperty("jboss.server.home.url") != null) {
    System.setProperty("my.log.dir", System
    .getProperty("jboss.server.log.dir"));
    System.setProperty("mydatasource", "java:myDS"); } else {
    System.setProperty("my.log.dir", System
    .getProperty("catalina.base"));
    System.setProperty("mydatasource", "java:comp/env/jdbc/myDS");
    }
    System.out.println(Mylistener.class);
    System.out.println(InterUtil.rb.getString("src.jndiIs") + System.getProperty("mydatasource")); new JobScheduler().createjob();
    //
    } // 创建一个session时激发19
    public void sessionCreated(HttpSessionEvent se) {
    count++;
    setContext(se);
    } // 当一个session失效时激发26
    public void sessionDestroyed(HttpSessionEvent se) {
    count--;
    setContext(se);
    }// 设置context的属性,它将激发attributeReplaced或attributeAdded方法32 public void setContext(HttpSessionEvent se) {
    se.getSession().getServletContext().setAttribute("onLine",
    new Integer(count));
    } // 增加一个新的属性时激发37
    public void attributeAdded(ServletContextAttributeEvent event) {
    log("attributeAdded('" + event.getName() + "', '" + event.getValue()
    + "')");
    } // 删除一个新的属性时激发45
    public void attributeRemoved(ServletContextAttributeEvent event) {
    log("attributeRemoved('" + event.getName() + "',    '"
    + event.getValue() + "')");
    }// 属性被替代时激发53 public void attributeReplaced(ServletContextAttributeEvent event) {
    log("attributeReplaced('" + event.getName() + "', '" + event.getValue()
    + "')");
    } // context删除时激发59
    public void contextDestroyed(ServletContextEvent event) {
    log("contextDestroyed()");
    this.context = null;
    } // context初始化时激发67
    public void contextInitialized(ServletContextEvent event) {
    this.context = event.getServletContext();
    context.setAttribute("my.log.dir", System.getProperty("my.log.dir"));
    context.setAttribute("mydatasource", System.getProperty("mydatasource"));

    log("contextInitialized()");
    String contextpath=context.getContextPath();
    System.out.println("xccccccccontext.getContextPath"+contextpath);
    if(contextpath!=null)
    InterUtil.isreport=(contextpath.indexOf("report")!=-1);

    } private void log(String message) {
    System.out.println("ContextListener: " + message);
    }
    web.xml
    <?xml version="1.0" encoding="GBK"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    classpath*:action/*.xml
    classpath:applicationContext*.xml
    </param-value>
    </context-param>
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    <listener>  
       <listener-class>  
    org.springframework.web.context.request.RequestContextListener  
    </listener-class>  
    </listener>  
    <listener>
    <listener-class>com.ucayee.javaapp.pub.Mylistener</listener-class>
    </listener> <!--
    <filter>
    <filter-name>GlobalFilter</filter-name>
    <filter-class>com.ucayee.javaapp.pub.GlobalFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>GlobalFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
    <filter-name>GlobalFilter</filter-name>
    <filter-class>com.ucayee.javaapp.pub.GlobalFilter</filter-class>
    </filter>
    --> <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    <!-- <init-param>
    <param-name>actionPackages</param-name>
    <param-value>com.hs.portalv8.www.struts2</param-value>
    </init-param>
    -->
    </filter>
    <!--
    <filter-mapping>
    <filter-name>GlobalFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>
    -->
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.do</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    <servlet>
    <servlet-name>log4jInit</servlet-name>
    <servlet-class>com.ecayee.log.log4jInit</servlet-class>
    <init-param>
    <param-name>log4j</param-name>
    <param-value>WEB-INF/classes/log4j.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
    <servlet-name>ForInit</servlet-name>
    <servlet-class>com.ucayee.javaapp.pub.ForInit</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet><!-- 
    <servlet>
    <servlet-name>ExecuteServlet</servlet-name>
    <servlet-class>com.ecayee.servlet.ExecuteServlet</servlet-class>
    <?xml version="1.0" encoding="GBK"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    classpath*:action/*.xml
    classpath:applicationContext*.xml
    </param-value>
    </context-param>
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    <listener>  
       <listener-class>  
    org.springframework.web.context.request.RequestContextListener  
    </listener-class>  
    </listener>  
    <listener>
    <listener-class>com.ucayee.javaapp.pub.Mylistener</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>*.do</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    <servlet>
    <servlet-name>log4jInit</servlet-name>
    <servlet-class>com.ecayee.log.log4jInit</servlet-class>
    <init-param>
    <param-name>log4j</param-name>
    <param-value>WEB-INF/classes/log4j.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
    <servlet-name>ForInit</servlet-name>
    <servlet-class>com.ucayee.javaapp.pub.ForInit</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- end --> <servlet>
        <description>sync weather</description>
        <display-name>syncweather</display-name>
        <servlet-name>syncweather</servlet-name>
        <servlet-class>com.ucayee.servlet.SyncWeather</servlet-class>
      </servlet>
    <servlet-mapping>
        <servlet-name>syncweather</servlet-name>
        <url-pattern>/syncweather</url-pattern>
      </servlet-mapping>
    <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list></web-app>
      

  4.   

    <url-pattern>/syncweather</url-pattern>改为<url-pattern>/*</url-pattern>试试呢