Axis2和Hibernate集成(没有Spring)

时间:2011-06-02 16:22:28

标签: hibernate axis2

我们使用Axis2框架(遗留系统)开发Web服务。使用jdbc它工作正常,但我需要使用它与hibernate。 我尝试了两种方法:

  1. (在aar之外)我把hibernate * .jars放到EARContent / lib和hibernate.cfg.xml到WEB-ING / classes
  2. (在aar内)我把hibernate.cfg.xml放到aar / META-INF /并添加到service.xml参数 <parameter name="ServiceTCCL">composite</parameter>
  3. 在第一种情况下,我无法访问hibernate.cfg.xml java.lang.RuntimeException: java.lang.RuntimeException: org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml

    在第二种情况下,我失去了对JNDII的访问,似乎失去了容器范围(jboss)jndi上下文。
    java.lang.RuntimeException: javax.naming.NameNotFoundException: UserTransaction not bound

    由于

1 个答案:

答案 0 :(得分:0)

实际上,我用我的hibernate SessionFactoryUtils

中的以下代码修复了这个问题
 // Create the initial SessionFactory from the default configuration files
        log.debug("Initializing Hibernate");

        AxisService axisService = MessageContext.getCurrentMessageContext().getAxisService();
        ClassLoader serviceClassLoader = axisService.getClassLoader();

        URL configURL = serviceClassLoader.getResource("hibernate.cfg.xml");
        configuration = new AnnotationConfiguration();
        // Use annotations: configuration = new AnnotationConfiguration();

        // Read hibernate.cfg.xml (has to be present)
        configuration.configure(configURL);

        // Build and store (either in JNDI or static variable)
        rebuildSessionFactory(configuration);

所以,我正在使用我的WebContent / WEB-INF / classes中的hibernate.cfg.xml以及EAR中的所有库。