2011-01-24 4 views
1

квестинг о javaee6 с вложенным GlassFish и встроенным дерби JNDI поиска для источника данных во время развертывания, прежде чем модульное тестирование выполняются ....Java EE 6 встроенных GlassFish блок встроенного котелка EJB тест

Пожалуйста найти настойчивость .xml здесь ...

<?xml version="1.0" encoding="UTF-8"?> 
<persistence 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" 
    version="2.0"> 
    <persistence-unit name="mymodulePU" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>jdbc/__default</jta-data-source> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:C:/myappDB;create=true" /> 
      <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> 
      <property name="eclipselink.ddl-generation.output-mode" 
       value="database" /> 
      <property name="eclipselink.logging.level" value="ALL" /> 
      <property name="eclipselink.logging.file" value="./target/eclipselink.logs" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

Пожалуйста, найдите в журнале консоли сервера здесь, когда тестовый модуль выполнен ....

Jan 24, 2011 5:12:44 PM com.sun.enterprise.resource.allocator.LocalTxConnectorAllocator createResource 
WARNING: poolmgr.create_resource_error 
Jan 24, 2011 5:12:44 PM com.sun.enterprise.connectors.ConnectionManagerImpl internalGetConnection 
WARNING: poolmgr.get_connection_failure 
Jan 24, 2011 5:12:44 PM com.sun.gjc.spi.base.DataSource getConnection 
WARNING: jdbc.exc_get_conn 
Jan 24, 2011 5:12:44 PM org.eclipse.persistence.session.file:/C:/DD/WORKSPACES/lean-soa-arch/entities/target/classes/_mymodulePU.ejb 
SEVERE: 
Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect. 
Error Code: 0 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309) 
...... 
....... 
...... 
Caused by: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect. 
    at com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:112) 
    at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:126) 
    ... 44 more 
Jan 24, 2011 5:12:44 PM org.eclipse.persistence.session.file:/C:/DD/WORKSPACES/lean-soa-arch/entities/target/classes/_mymodulePU.properties 
FINEST: End deploying Persistence Unit mymodulePU; session file:/C:/DD/WORKSPACES/lean-soa-arch/entities/target/classes/_mymodulePU; state Deployed; factoryCount 1 

ответ

1

сообщением «java.net.ConnectEx ception: Ошибка подключения к серверу localhost на порту 1527 "означает, что сетевой сервер Derby не запущен и работает. Чтобы подключиться к нему, вам необходимо запустить сетевой сервер Derby. Вот как запустить сервер: http://db.apache.org/derby/docs/10.6/adminguide/tadmincbdjhhfd.html

+0

Это исправлено для меня. – Jazzepi

+0

OP говорит об использовании встроенного Derby. Встроенный Derby не работает в сетевом режиме, и вы не запускаете сетевой сервер в этом случае. – NBW

4

@Bryan Он не пытается запустить Derby в режиме сетевого сервера, он хочет запустить его во встроенном режиме, поэтому я не думаю, что ваше предложение поможет в этом случае.

Проблема, которую он видит, связана с тем, что у него есть источник данных JTA, называемый jdbc/_ по умолчанию, определенный в его файле persistence.xml. Когда вложенные стеклянные глаза видят это, он пытается найти его в своем контексте JNDI, и когда он обнаруживает ресурс jdebc/ _default, который определен в domain.xml, он использует. По умолчанию это сетевой ресурс Derby, определенный в domain.xml.

Что нужно сделать Digambar - это запустить GF и создать новый пул соединений, который использует встроенное дерби и создать новый ресурс jdbc, который использует этот пул для домена.

Я использовал консоль веб-администратора Glassfish, но вы также можете использовать команду asadmin, если знаете все ключи командной строки для различных параметров. В любом случае ваш domain.xml будет иметь новые ресурсы. Как только вы это сделаете, просто измените свой файл persistence.xml, чтобы jta-datasource ссылался на этот новый ресурс jdbc, и вы должны быть настроены. Вы также можете удалить два свойства javax.persistence из вашего persistence.xml, потому что они не нужны в этот момент (эти настройки заданы при настройке нового ресурса пула соединений).

Обязательно установите; create = true для свойства ConnectionAttributes при настройке пула подключенных подключений.

После создания пула соединений и ресурсов jdbc у моего домена.xml было следующее. Возможно, вы немного отличаетесь в зависимости от настроек, которые необходимы для вашего конкретного приложения.

<jdbc-connection-pool connection-validation-method="auto-commit" validation-table-name="SYS.SYSALIASES" allow-non-component-callers="true" connection-leak-reclaim="true" lazy-connection-association="true" connection-creation-retry-attempts="90" lazy-connection-enlistment="true" validate-atmost-once-period-in-seconds="120" driver-classname="" datasource-classname="org.apache.derby.jdbc.EmbeddedDataSource40" res-type="javax.sql.DataSource" connection-leak-timeout-in-seconds="60" description="" name="GFEmbeddedPool" is-connection-validation-required="true"> 

     <property name="DatabaseName" value="C:\tmp\db\unit-test"></property> 
     <property name="ConnectionAttributes" value=";create=true"></property> 
     <property name="AttributesAsPassword" value="false"></property> 
     <property name="LoginTimeout" value="0"></property> 

    </jdbc-connection-pool> 
    <jdbc-resource pool-name="GFEmbeddedPool" description="" jndi-name="jdbc/__embeddedGF"></jdbc-resource> 
Смежные вопросы