经过多次努力,我设法首先通过JDBC连接Web应用程序和远程Informix引擎。实际上没有关于它的文档,或者我找不到。
然后,下一个自然步骤是通过连接池将Web应用程序与远程Informix引擎连接。 同样,它耗费了我很多,但是使用Informix做了很多工作,例如MySQL,PostgreSQL和Oracle的任何地方都比较多,但Informix却没有。同样可以在Glassfish中配置连接池,并在成功连接消息之后ping设置,并根据我的理解,已经正确设置。
现在,我发现无法通过Hibernate连接到Glassfish中创建的数据源。我的项目使用JSF 2.2 + PrimeFaces + Hibernate。
我的连接池名为“PromoGas”,我的数据源名为“jdbc / promogas”。
我的“hibernate.cfg.xml”文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="hibernate/SessionFactory">
<property name="hibernate.connection.datasource">java:/hibernate/jdbc/promogas</property>
<property name="hibernate.connection.driver_class">com.informix.jdbc.IfxDriver</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.dialect">org.hibernate.dialect.InformixDialect</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="pojos/CbtesCoop.hbm.xml"/>
<mapping resource="pojos/CbtesCptos.hbm.xml"/>
<mapping resource="pojos/CptosOtrosSum.hbm.xml"/>
<mapping resource="pojos/Clientes.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我通过不同的MySQL教程配置了这个配置,但是将它改编为Informix。
我的“web.xml”文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org /xml/ns/javaee/web-app_3_1.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
而且,我的“glassfish-web.xml”如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>
</glassfish-web-app>
让我感到惊讶的是,教程不会说文件“web.xml”,也不会说“glassfish-web.xml”。我认为这些文件或两者都缺少某些配置,但在网络上找不到任何关于它的内容。也许我错了。
当我运行应用程序时,出现的错误如下: “无法查找JNDI名称[java:/ hibernate / jdbc / promogas]”
我知道的很少,我需要一个上下文,但在教程中不要说任何内容。
对于能够指导我这个问题的人,我将不胜感激。
一个拥抱!
古斯塔沃