在Glassfish 4.1上配置Apache Archiva

时间:2015-12-26 20:39:28

标签: java glassfish glassfish-4 archiva

我已经在Glassfish 4.1.1上部署了Archiva 2.2.0,但有关配置的一些事情令我感到困惑。

我已经遵循Glassfish特定指南here.并修改了domain.xml,但我预计嵌入式数据库(在Archiva WAR中)会被使用,但事实并非如此。当我启用Archiva战争时,它失败并出现错误:

  

java.lang.IllegalStateException:ContainerBase.addChild:start:org.apache.catalina.LifecycleException:org.springframework.beans.factory.BeanCreationException:创建名称为' taskExecutor #indexing':注入的bean时出错自动连接的依赖关系失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin org.apache.archiva.scheduler.indexing.ArchivaIndexingTaskExecutor.managedRepositoryAdmin;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为' managedRepositoryAdmin#default'的注册自动连接依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:protected org.apache.archiva.redback.role.RoleManager org.apache.archiva.admin.repository.managed.DefaultManagedRepositoryAdmin.roleManager;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为' roleManager的bean时出错':init方法的调用失败;嵌套异常是javax.jdo.JDODataStoreException:初始化数据库失败。请检查您的数据库JDBC驱动程序是否可访问,数据库URL和用户名/密码是否正确。例外:分配连接时出错。原因:无法分配连接,因为:java.net.ConnectException:在端口1527上连接到服务器localhost时出错,并显示消息Connection refused。   java.sql.SQLException:分配连接时出错。原因:无法分配连接,因为:java.net.ConnectException:在端口1527上连接到服务器localhost时出错,并显示消息Connection refused。

基本上我理解这意味着没有可用的数据库连接,但是我配置domain.xml使用嵌入式数据库我不明白为什么会出现此错误。

我使用它的唯一方法是使用asadmin命令start-database启动Glassfish中的默认数据库。然后archiva部署,但它使用sun-appserv-samples中默认定义的数据库domain.xml(见下文)

以下是domain.xml

的相关部分
<resources>
<jdbc-resource pool-name="__TimerPool" object-type="system-admin" jndi-name="jdbc/__TimerPool"></jdbc-resource>
<jdbc-resource pool-name="DerbyPool" object-type="system-all" jndi-name="jdbc/__default"></jdbc-resource>
<jdbc-connection-pool datasource-classname="org.apache.derby.jdbc.EmbeddedXADataSource" name="__TimerPool" res-type="javax.sql.XADataSource">
  <property name="databaseName" value="${com.sun.aas.instanceRoot}/lib/databases/ejbtimer"></property>
  <property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<jdbc-connection-pool is-isolation-level-guaranteed="false" datasource-classname="org.apache.derby.jdbc.ClientDataSource" name="DerbyPool" res-type="javax.sql.DataSource">
  <property name="PortNumber" value="1527"></property>
  <property name="Password" value="APP"></property>
  <property name="User" value="APP"></property>
  <property name="serverName" value="localhost"></property>
  <property name="DatabaseName" value="sun-appserv-samples"></property>
  <property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<connector-connection-pool max-pool-size="250" resource-adapter-name="jmsra" steady-pool-size="1" name="jms/__defaultConnectionFactory-Connection-Pool" connection-definition-name="javax.jms.ConnectionFactory"></connector-connection-pool>
<connector-resource pool-name="jms/__defaultConnectionFactory-Connection-Pool" object-type="system-all-req" jndi-name="jms/__defaultConnectionFactory"></connector-resource>
<context-service object-type="system-all" jndi-name="concurrent/__defaultContextService"></context-service>
<managed-executor-service object-type="system-all" jndi-name="concurrent/__defaultManagedExecutorService"></managed-executor-service>
<managed-scheduled-executor-service object-type="system-all" jndi-name="concurrent/__defaultManagedScheduledExecutorService"></managed-scheduled-executor-service>
<managed-thread-factory object-type="system-all" jndi-name="concurrent/__defaultManagedThreadFactory"></managed-thread-factory>
<jdbc-connection-pool datasource-classname="org.apache.derby.jdbc.EmbeddedXADataSource" name="archivaUsersPool" res-type="javax.sql.XADataSource">
  <property name="databaseName" value="${com.sun.aas.instanceRoot}/lib/databases/archivausers"></property>
  <property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<jdbc-connection-pool datasource-classname="org.apache.derby.jdbc.EmbeddedXADataSource" name="archivaPool" res-type="javax.sql.XADataSource">
  <property name="databaseName" value="${com.sun.aas.instanceRoot}/lib/databases/archivapool"></property>
  <property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<jdbc-resource pool-name="archivaUsersPool" jndi-name="jdbc/users"></jdbc-resource>
<jdbc-resource pool-name="archivaPool" jndi-name="jdbc/archiva"></jdbc-resource>
<mail-resource host="email.example.com" from="me@email.example.com" user="me" jndi-name="mail/Session"></mail-resource>

                                                                                                   

所以我的问题是:

  1. 如何让Archiva使用嵌入式数据库,我不想使用Glassfish。
  2. 为什么当它无法使用嵌入式数据库时,可以使用它可以“抓住”的任何人。当然这是不正确的行为? domain.xml中没有任何内容可以将Archiva链接到sun-appserv-samples数据库?
  3. 我对domain.xml所做的修改是否正确?

0 个答案:

没有答案