当前位置: 首页 > 知识库问答 >
问题:

Hibernate 4.1.3 多租户空指针异常

欧阳玺
2023-03-14

我在使用hibernate 4.1.3的新的多租户特性时遇到了问题,我使用Glassfish 3.1和JPA2,Hibernate 4.1.3作为提供者。

这是我的坚持.xml

<persistence version="2.0" 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_2_0.xsd">
    <persistence-unit name="AuroraServicePU" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/sqlserver/Aurora</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.default_batch_fetch_size" value="100"/>
            <property name="hibernate.cache.use_second_level_cache" value="false"/>
            <property name="hibernate.cache.use_query_cache" value="false"/>
            <property name="hibernate.tenant_identifier_resolver" value="org.dna.aurora.web.TenantResolver" />
            <property name="hibernate.multiTenancy" value="DISCRIMINATOR" />
        </properties>
    </persistence-unit>
</persistence>

这是我在尝试部署应用程序时遇到的异常。

信息:HCANN000001:Hibernate Commons注解{4.0.1.Final}。找不到属性信息:HHH000021:Bytecode提供程序名称:javassist INFO:HHH000204:正在处理PersistenceUnitInfo[名称:AuroraServicePU…]SEVERE:调用org.glassfish.persistence.jpa类时出现异常。JPADeployer准备方法SEVERE:准备应用程序时出现异常SEVERE:日志消息为空。org.hibernate.engine.jdbc.internal.JdbcServicesImpl$MultiTenantConnection Provider处的java.lang.NullPointerException位于org.hibernate。engine.jdbc.internal。JdbcSservicesImpl.configure(JdbcServicesImpl.java:117)位于org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159),位于org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71),位于org hibernate.cfg Configuration.buildSettingsInternal(Configuration.java:2277)org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2273),位于org.hibernate.ejb.Ejb3Configuration.buildSessionFactory(Configuration.java:1742),位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890),位于org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader。java:205),位于org。glassfish。persistence.jpa。PersistenceUnit Loaderorg.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUD(JPADeploy er.java:486),网址为org.glassfish.persistence.jpa.jpa.JPADreployer.createEMF(JPADreploy er.java:220),网址:org.glassfine.persistence.jpa.JPADeplayer.prepare(JPADdeployer.java:166),网址是com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:870)com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410),位于com.sun.eenterprise.v3.server.ApplicationLifecycle.deploycom.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)位于com.sun.eenterprise.v3.admin.CommandRunerImpl.do Command(CommandRunerImpl.java.1067)位于com.sun.enterprise.w3.admin.CcommandRunnerimpl.access$1200(CommandRunner.java:96com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)位于com.sun.eenterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465)位于com.sun.enterprise.w3.admin.AdminAdapter.service(AdminAdapter.java:222)位于com.sun.gillly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)位于com.un.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)位于com.sun.enterprise.v3.services.impl.ContainerMaper.service(ContainerMaper.java:234),位于com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822),位于com.ibm.sun.grizly.http:ProcessorTask.doProcess(ProcessorTask.java:719),位于.com.sun.grizzley.http.PressorTask.proccess(ProcessorTask.java:1013)(DefaultProtocolFilter.java:225),位于com.sun.gillly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocalChain.java:137),位于.com.sun.gillly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104),位于com.sun.gridly.DefaultProtocolChain.executecom.sun.gridgey.ProtocolChainTextTask.doCall(ProtocolchainTextTask.java:54),位于com.sun.gillgey.SelectionKeyContextTask.call(SelectionKeyContext Task.java:59),位于com.ibm.sun.gridley.ContextTask.run(ContextTask.java:71),位于.com.sun.gridge.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532),位于java.lang.Thread.run(线程.java:619)

严重:准备应用程序时出现异常

更新:我再次阅读了文档,并注意到这一重要的信息和平:

DISCRIMINATOR与分区(鉴别器)方法相关。尝试使用此策略打开没有租户标识符的会话是错误的。截至4.0和4.1,此策略尚未在HiberNate中实现。计划在5.0提供支持。

这真的意味着鉴别器策略现在不可用吗?也许这就是问题的全部?

任何帮助都会很棒。谢谢你,伊多。

共有1个答案

殳越
2023-03-14

您尚未指定Hibernate应如何获取连接。你看过与此相关的文档吗?http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#d5e4583

并且具体是:http://docs . JBoss . org/hibernate/ORM/4.1/dev guide/en-US/html _ single/# d5e 4658 http://docs . JBoss . org/hibernate/ORM/4.1/dev guide/en-US/html _ single/# d5e 4702

 类似资料:
  • 2019-03-20 18:34:28.251错误25640---[nio-8081-exec-1]O.A.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()for servlet[dispatcherServlet]引发异常 2019-03-20 18:34:28.252错误25640---[nio-8081-exec-1]O.A.C.C.C.

  • 问题内容: 有可能这可能是一个双重问题。我将String变量初始化为null。我可能会或可能不会使用一个值更新它。现在我想检查此变量是否不等于null以及我尝试执行的操作是否会得到null指针异常。空指针异常,因为它代价高昂。是否有任何有效的解决方法.TIA 问题答案: 如果您使用 你 不会 得到。 我怀疑你在做什么: 这是因为null 而引发,而不是因为null。 如果仍然无法解释,请发布您用于

  • 我已经更新了我的项目中的一些依赖关系之后,我的Hibernate配置类显示Nullpointerx的。 我将SpringDataJPA存储库与hibernate一起使用,已经超过24小时了,仍然没有找到任何关于小问题的适当解决方案。 我已经尝试过的一些解决方案:- 使用@bean(name=“entityManagerFactory”)提供bean名称 我面临的问题 波姆。xml文件 配置类 db

  • 当我试图从DB查询结果时,我得到一个空指针异常。以下是错误: 这是错误产生的函数。 如果我启动应用程序信息服务(=new ApplicationInfoService()),我会得到一个指向我的服务类的空指针错误,在这里进行查询 错误转到createQuery行,如果我打印出EntityManager,它将返回“null”。为什么我的Entitymanager不能初始化。我在我的登录系统中使用了几

  • 问题内容: 嗨,我们一直在使用apache编写我们的Java程序来读取xls和xlsx文件,问题是我们由于两个原因而得到了空指针异常。第一个是已经解决的空白单元格,另一个是当我们选择一个没有任何记录的列。 我们的程序要求输入excel文件的路径,然后输入要读取的文件的特定工作表号和特定的工作表的列号。这是读取xls文件的代码 变量工作表名称用于excel文件的工作表编号 变量cols用于您要阅读的

  • 问题内容: 我正在android中做一个应用程序,因此我需要访问com.android.internal.telephony API。现在,我可以访问这些API了,但问题是,无论我在自己的类中调用Class Call.java方法的什么地方,都会抛出。您可以在http://hi- android.info/src/com/android/internal/telephony/Call.java.h