Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java、JPA、Glassfish、无效资源:jdbc/\uuuu default\uuuu pm_Java_Jpa_Deployment_Glassfish - Fatal编程技术网

Java、JPA、Glassfish、无效资源:jdbc/\uuuu default\uuuu pm

Java、JPA、Glassfish、无效资源:jdbc/\uuuu default\uuuu pm,java,jpa,deployment,glassfish,Java,Jpa,Deployment,Glassfish,我使用Glassfish 3.1.2.2(构建5)、JPA、EclipseLink和MySQL 我通过Glassfish管理面板创建了MySQL池。从GF管理面板Ping到MySQL是可以的 我使用persistence.xml创建了应用程序: <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> &

我使用Glassfish 3.1.2.2(构建5)、JPA、EclipseLink和MySQL

我通过Glassfish管理面板创建了MySQL池。从GF管理面板Ping到MySQL是可以的

我使用persistence.xml创建了应用程序:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="myUnit">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myDBName"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="myPass"/>
        <property name="javax.persistence.ddl-generation" value="drop-and-create-tables"/>
    </properties>
</persistence-unit>
GF日志中的Stacktrace是巨大的。开始于

at com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:540)
at com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:469)
at org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63)
at org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71)
....
有人知道发生了什么事以及该怎么办吗?

(与我的帖子相同,但现在有了适当的说明):

在使用安装程序配置持久性时,只需在persistence.xml中设置JDBC池的JNDI名称。可选,您可以设置目标数据库名称

<persistence-unit name="foo" transaction-type="JTA">
    <jta-data-source>jdbc/mysql</jta-data-source>
    <!--optional-->
    <property name="eclipselink.target-database" value="MySQL4"/>
</persistence-unit>

jdbc/mysql
我还鼓励将“拖放并创建表”更改为“创建表”,这样您就不会丢失数据,这应该以以下方式提供EclipseLink的属性:

<property name="eclipselink.ddl-generation" value="create-tables"/>

而且也很方便

<property name="eclipselink.ddl-generation.output-mode" value="both"/>

这将创建模式和sql脚本

有关更多信息,请访问:
或者,如果您只创建了一个MySQL连接池,那么还必须创建一个JDBC资源。这可以从用于创建连接池的上下文菜单上方的上下文菜单中创建


在我的Glassfish(我的JDBC资源)中,JDBC/\u默认使用连接池mysql\u lemon。

我也遇到了同样的问题,我坚信这是由一些剩余缓存造成的

我刚做完

asadmin remove-domain domain1
asadmin create-domain domain1 
firefox http://localhost:4848 
现在不再将
\uu pm
附加到JDBC资源中

如果这没有帮助,那么我假设您正在使用

@PersistenceContext
EntityManager em;
这应该被替换为 e、 g


在netbeans Instalation向导创建的服务器上运行/部署应用程序时,我也遇到了同样的问题

为了解决这个问题,我从官方网站下载了最后一个glassfish版本,并访问: Netbeans>“服务选项卡”>“服务器”>“添加服务器…”


请记住更改项目配置以使用新的glassfish服务器实例。

nontx和pm是池的扩展。 文档: (其他地方和)

第一次\uu pm

允许非组件调用者

您可以允许非Java EE组件,例如servlet过滤器, 生命周期模块和第三方持久性管理器使用此 JDBC连接池。返回的连接将被自动删除 与从事务中获取的事务上下文一起登记 经理标准JavaEE组件也可以使用这样的池。 非组件调用方获得的连接不会自动恢复 容器在事务结束时关闭。他们一定是 由调用方显式关闭

可以通过以下方式启用非组件调用者:

选中管理控制台中“编辑连接池高级属性”页面上的“允许非组件调用者”框。这个 默认值为false。有关详细信息,请单击中的“帮助”按钮 管理控制台

在asadmin create jdbc连接池命令中指定----allownoncomponentcallers选项。有关更多信息,请参阅 Oracle GlassFish Server 3.0.1参考手册

在asadmin set命令中指定允许非组件调用者选项。例如:

asadmin set domain1.resources.jdbc连接池.DerbyPool.allow非组件调用者=true

有关更多信息,请参阅Oracle GlassFish Server 3.0.1参考手册

创建带有_pm后缀的JDBC资源

\uuu nontx

使用非事务性连接

您可以在以下任意位置指定非事务性数据库连接: 这些方法:

选中管理中新建JDBC连接池或编辑连接池页面上的非事务性连接框 安慰默认设置为未选中。有关详细信息,请单击 管理控制台中的“帮助”按钮

在asadmin create jdbc连接池命令中指定----nontransactionalconnections选项。有关更多信息,请参阅 Oracle GlassFish Server 3.0.1参考手册

在asadmin set命令中指定非事务性连接选项。例如:

asadmin set domain1.resources.jdbc连接池.DerbyPool.non-transactional connections=true

有关更多信息,请参阅Oracle GlassFish Server 3.0.1参考手册

在GlassFish服务器中使用DataSource实现,该服务器提供GetNonExconnection方法。此方法检索JDBC 不在任何事务范围内的连接。有两个 变体

public java.sql.Connection getNonTxConnection()抛出java.sql.SQLException

public java.sql.Connection getNonTxConnection(字符串用户,字符串密码)抛出java.sql.SQLException

创建一个JNDI名称以uux结尾的资源。这将强制使用此资源查找的所有连接为非连接 事务性的


我遇到了这个问题。我在管理控制台中设置了jdbc连接池和jdbc资源。但我没有在persistence.xml中设置数据源

  <persistence-unit name="OnlinePrintService-warPU" transaction-type="JTA">
    <jta-data-source>jdbc/your-name</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>

jdbc/您的名字
假的

我也有同样的问题

解决方案(针对仍存在此问题的任何人):

  • 如果您将NetBeans IDE 8.1与Glassfish 4.1.1一起使用,我建议您将其更改为Glassfish 4.1

  • 转到NetBeans中的左侧面板

  • 单击
    services>server>glassfish
    ,然后右键单击(在glassfish服务器中)并选择查看域管理控制台,将显示一个网页

    转到左侧,选择
    resources>JDBC
    JDBC连接池

    单击
    new
    ,添加新的连接池,键入池的名称

    接下来,选择
    javax.sql.ConnectionPoolDataSource
    datadriver
    (在我的例子中是MySQL)并单击Next

    之后,你应该输入所有需要的信息
    em=Persistence.createEntityManagerFactory("DefaultPU(PUT_PERSISTANCE_UNIT_NAME_HERE").createEntityManager();
    String ret="Hello " + txt + ", "+ em.createNamedQuery("Usertable.findAll").getResultList().get(0).toString() +" !" ;
    em.close();
    
      <persistence-unit name="OnlinePrintService-warPU" transaction-type="JTA">
        <jta-data-source>jdbc/your-name</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
          <property name="javax.persistence.schema-generation.database.action" value="create"/>
        </properties>
      </persistence-unit>
    
    @Singleton
    @Startup
    @DataSourceDefinition(name="java:global/jdbc/myDataSource",
        className="com.microsoft.sqlserver.jdbc.SQLServerDataSource",
        url="jdbc:sqlserver://127.0.0.1:1433;databaseName=myDB",
        user="myuser",
        password="mypassword"
    )
    public class DataSourceBean {
    }
    
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
                 xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
                 version="2.1">
        <persistence-unit name="myUnit" transaction-type="JTA">
            <jta-data-source>java:global/jdbc/myDataSource</jta-data-source>
            <properties>
                <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
            </properties>
        </persistence-unit>
    </persistence>