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

JPA 2.0和EclipseLink 2.0的身份验证错误

蒋波光
2023-03-14

我是JPA的新手。我正在使用maven、Eclipselink2.0和JPA2.0。我已经使用数据库连接创建了实体。这是我的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<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="certifications" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/com/ni/ds_edata_soa_nontx</jta-data-source>
        <class>com.ni.apps.engineering.certification.entities.NicdsCliCertificationStg</class>
        <class>com.ni.apps.engineering.certification.entities.NicdsCliCertificationStgPK</class>
        <class>com.ni.apps.engineering.certification.entities.NicdsCliUpMapping</class>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>          
        <properties>                        
            <property name="javax.persistence.jdbc.password" value="soa_user"/>
            <property name="javax.persistence.jdbc.user" value="soa_user"/>
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
            <property name="eclipselink.logging.level.sql" value="FINE"/>           
        </properties>       
    </persistence-unit>
</persistence>

这是我在尝试运行应用程序时遇到的错误。

--编辑--这是我获取EntityManager的方式

private EntityManagerFactory emf;

    protected EntityManager getEntityManager(){
        if(emf == null){
            emf = Persistence.createEntityManagerFactory("certifications");
        }
        return emf.createEntityManager(); //This is where it fails
    }

共有1个答案

华瀚漠
2023-03-14

您正在使用application server提供的JTA数据源,因此EclipseLink正在获得已经初始化的EntityManager。我认为您不需要额外的属性,因为这样EclipseLink就可以从DataSource创建连接为

ds.getConnection(username, password);

取而代之的是

ds.getConnection();

请尝试删除属性javax.persistence.jdbc.password、javax.persistence.jdbc.user和javax.persistence.jdbc.driver和ee(如果它适合您的话)。

如果您需要某个地方的EntityManager,请让WebLogic进行初始化,例如,在Servlet中,它将如下所示:

@WebServlet(urlPatterns = { "/Test" })
public class TestServlet {
  @PersistenceContext(unitName = "certifications")
  private EntityManager entityManager;
}
 类似资料:
  • 问题内容: 我可以不用密码就可以将Node应用程序连接到Redis,但是添加密码后,我无所事事。 这是我的代码,摘自一个示例: 在运行应用程序时,我得到以下堆栈跟踪: 生成该行的行是最后一个-如果我注释掉尝试设置RedisStore的尝试,则不会出现任何错误。 我确定密码正确(我可以在redis- cli中进行验证,如果我将密码更改为错误,则可以验证auth回调不会触发)。如果我删除密码并注释掉两

  • 问题内容: 确保GWT + Tomcat应用程序执行身份验证和授权的最佳策略是什么? 问题答案: 有两种基本策略: 确保入口点; 保护远程服务。 最简单的方法是使用常规的Web应用程序安全工具来限制对GWT生成的html / js文件的访问: 春季安全; web.xml约束。 这样可以让您拥有eg 和。 保护远程服务 如果上述解决方案还不够,您可以进行更深入的研究。我已经通过Spring Secu

  • 我想在CDH-5.3.2版本中使用水槽从twitter获取数据。我已经配置了flume.conf、hbase接收器和twitter源代码。 但是,当我启动代理时,我收到以下错误: flume.conf和hbase接收器代码与此博客相同:http://ahikmat.blogspot.com/2014/08/streaming-twitter-tweets-to-hbase-with.html 而且

  • 在controller文件夹中,我有一个名为fbauth.php的控制器,其中有以下代码 但当我点击facebook链接并尝试连接时,我得到了如下错误 另外,为了进行双重检查,我在Kohana之外创建了这个函数,它没有问题。 我所做的是,在Kohana的外部,我创建了一个名为index.php的文件,在其中我输入了html和Facebook身份验证的标记,然后我创建了一个名为testauth.ph

  • cluster=hfactory.getOrCreateCluster(“test cluster”,“localhost:9160”,凭据); 但不幸的是,它给了我一个错误: HFactory类型中的方法getOrCreateCluster(String,CassandraHostConfigurator,Map)不适用于参数(String,String,Map)

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工