2013-01-03 48 views
0

Friends'm试图通过hibernate orm连接我的应用程序在openshift中。 但部署失败。您可以检查服务器日志中的错误消息:在OpenShift上的JBoss服务器上找不到hibernate.cfg.xml

 

    2013/01/03 14:02:59,296 ERROR [com.wavetech_st.util.HibernateUtil] (MSC service thread 1-4) Falha na criação do objeto SessionFactory: org.hibernate.HibernateException: hibernate.cfg.xml not found 
    2013/01/03 14:02:59,298 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/testehome]] (MSC service thread 1-4) Exception starting filter conexaoFilter: java.lang.ExceptionInInitializerError 
      at com.wavetech_st.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:26) [classes:] 
      at com.wavetech_st.util.HibernateUtil.(HibernateUtil.java:12) [classes:] 
      at com.wavetech_st.web.filter.ConexaoHibernateFilter.init(ConexaoHibernateFilter.java:31) [classes:] 
      at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.10.Final.jar:] 
      at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3269) [jbossweb-7.0.10.Final.jar:] 
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3865) [jbossweb-7.0.10.Final.jar:] 
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) 
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_09-icedtea] 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_09-icedtea] 
      at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_09-icedtea] 
    Caused by: org.hibernate.HibernateException: resources/hibernate.cfg.xml not found 
      at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173) [hibernate-core-4.1.1.Final.jar:4.1.1.Final] 
      at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1943) [hibernate-core-4.1.1.Final.jar:4.1.1.Final] 
      at org.hibernate.cfg.Configuration.configure(Configuration.java:1924) [hibernate-core-4.1.1.Final.jar:4.1.1.Final] 
      at com.wavetech_st.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:19) [classes:] 
      ... 11 more 

我在Eclipse中创建此应用程序。我已经在本地服务器JBoss 7.1上测试过了,它可以工作。但是,当我尝试远程给出的错误。我设置文件hibernate.cfg数据源部署到OpenShift之前:

<property name="connection.datasource">java:jboss/datasources/MysqlDS</property> 

这是我的目录结构:

enter image description here

这是我的网页过滤:

 

    package com.wavetech_st.web.filter; 
    import java.io.IOException; 
    import javax.servlet.*; 
    import org.hibernate.SessionFactory; 
    import com.wavetech_st.util.HibernateUtil; 


    public class ConexaoHibernateFilter implements Filter { 

     private SessionFactory sf; 

     @Override 
     public void init(FilterConfig config) throws ServletException {// executado quando o aplicativo web e colocado no ar 

      this.sf = HibernateUtil.getSessionFactory(); 

     } 

     @Override 
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { 

      try { 

       this.sf.getCurrentSession().beginTransaction(); 
       chain.doFilter(servletRequest, servletResponse); 
       this.sf.getCurrentSession().getTransaction().commit(); 
       this.sf.getCurrentSession().close(); 

      } catch (Throwable ex) { 

       try { 

        if(this.sf.getCurrentSession().getTransaction().isActive()) 
         this.sf.getCurrentSession().getTransaction().rollback(); 

       } catch (Throwable t) { 

        t.printStackTrace(); 

       } 

       throw new ServletException(ex); 

      } 
     } 

     @Override 
     public void destroy() {} 
    } 

This is my HibernateUtil: 

<pre> 

package com.wavetech_st.util; 
import org.apache.log4j.Logger; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.service.ServiceRegistry; 
import org.hibernate.service.ServiceRegistryBuilder; 

public class HibernateUtil { 

    static final Logger logger = Logger.getLogger(HibernateUtil.class); 
    private static final SessionFactory sessionFactory = buildSessionFactory(); 
    private static ServiceRegistry  serviceRegistry; 

    private static SessionFactory buildSessionFactory() { 

     try { 

      Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); 
      serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); 

      return cfg.buildSessionFactory(serviceRegistry); 
     } catch (Throwable e) { 

      logger.error("Falha na criação do objeto SessionFactory: " + e); 
      throw new ExceptionInInitializerError(e); 

     } 
    } 

    public static SessionFactory getSessionFactory() { 

     return sessionFactory; 
    } 
} 

请帮助: -/

回答

0

感谢队友,我在JBoss的Openshift和MyBatis的,但你的回答,你帮我同样的问题,我附上一张照片,我把MyBatis的配置文件谁是类似的文件作为休眠

Mybatis config file and Openshift

相关问题