Разверните Apache Archiva на Tomcat 6

Я пытаюсь развернуть Apache Archiva на моем Сервере, но он все время терпит неудачу.

спецификации:

os: ubuntu 10.04 
tomcat: Apache Tomcat/6.0.24
jvm: 1.6.0_27-b27

$CATALINA_HOME : /usr/share/tomcat6
$CATALINA_BASE : /var/lib/tomcat6
$CATALINA_OPTS : "-Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_BASE"

path to lib : $CATALINA_BASE/common/lib

#java -version
java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.3) (6b27-1.12.3-0ubuntu1~10.04.1)
OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)

Сам Tomcat запущен и работает. Я следовал инструкциям на этой странице, скопировал все необходимые файлы в lib (расположение указано выше), создал archiva.xml в /var/lib/tomcat6/conf/Catalina/localhost/ с этим содержанием:

<Context path="/archiva" docBase="/var/lib/tomcat6/archiva/apache-archiva-1.4-M4.war">

  <Resource name="jdbc/users"
        auth="Container"
        type="javax.sql.DataSource"
        username="philipp"
        password="xxx"
        driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
        url="jdbc:derby:////localhost:1527/archivausers;create=true" />

  <Resource name="jdbc/archiva"
        auth="Container"
        type="javax.sql.DataSource"
        username="philipp"
        password="xxx"
        driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
        url="jdbc:derby://localhost:1527/archivadata;create=true" />

  <Resource name="mail/Session"
        auth="Container"
        type="javax.mail.Session"
        mail.smtp.host="localhost"/>
</Context>

После нажатия кнопки "Пуск" в менеджере tomcat: FAIL - Application at context path /archiva could not be started

последние строки на catalina.out являются:

SCHWERWIEGEND: A web application created a ThreadLocal with key of type[java.lang.ThreadLocal] (value [java.lang.ThreadLocal@69bf9]) and a value of type [org.apache.logging.log4j.core.impl.Log4jLogEvent] (value [Logger=org.springframework.web.context.ContextLoader Level=ERROR Message=Context initialization failed]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed. 11.06.2013 16:29:30 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap SCHWERWIEGEND: A web application created a ThreadLocal with key of type [null] (value [org.apache.logging.log4j.spi.DefaultThreadContextMap$1@1ea380c]) and a value of type [null] (value [null]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.

Я пытался более или менее все, что приходило мне в голову, но всегда терпел неудачу!

Любая идея?

1 ответ

Решение

Так как мне удалось запустить его, я думаю, кому-то другому было бы полезно рассказать о шагах, которые я предпринял. Эти описания предполагают, что вы уже ознакомились с официальными инструкциями по установке архива и должны быть своего рода дополнительным объяснением, поскольку официальная документация может быть более многословной.

Сначала я скачал "войну" и сохранил ее в /var/lib/tomcat6/archiva, это определяет отправную точку.

1. База данных:

В официальной инструкции просят скачать derby.jar а также derbytools.jar чтобы сохранить их в $CATALINA_HOME/lib (в моем случае это указывает на /usr/share/tomcat6/lib) сделать файлы доступными для всех веб-приложений, работающих на этом коте. В своем исследовании я подошел к проекту Apache Derby, где я также нашел эту команду:

sudo apt-get install sun-javadb-core sun-javadb-client

который просто устанавливает Derby DB (в моем случае мне пришлось добавить "Multiverse" в /etc/apt/sources.list по одному источнику). После этого я бегу:

sudo ln -s /usr/share/javadb/lib/*.jar -t /usr/share/tomcat6/lib

что связывало все необходимые derby-jar с библиотекой Tomcat (вероятно, некоторые из них там не нужны). После этого я создал каталог db в /var/lib/tomcat6/archiva и изменил его владельца и группу на tomcat6, но вы должны хранить файлы базы данных, но важно не создавать две подкаталоги для двух необходимых баз данных, а именно: users а также archiva внутри этого каталога.

2. Почта

Там я следовал инструкциям и скопировал mail.jar а также activation.jar в библиотеку котов.

3. домашний каталог архива

Одна из ошибок, препятствующих запуску архивы, заключалась в том, что она пыталась создать домашний каталог в /usr/share/tomcat6/.m2, но это привело к конфликту разрешений, поэтому я создал этот каталог и изменил группу и владельца на tomcat6.

Не в последнюю очередь я заботился о archiva.xml, расположенный в в /var/lib/conf/Catalina/localhost, Так как пути, которые должны быть заменены, не были отмечены жирным шрифтом, их довольно легко отслеживать, поэтому я пытаюсь сделать это здесь, используя ${path} указать на это:

<Context path="/archiva"
     docBase="${path to the archiva war archive here}">

  <Resource name="jdbc/users"
        auth="Container"
        type="javax.sql.DataSource"
        username="sa"
        password=""
        driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
        url="jdbc:derby:${path to the db folder}/users;create=true" />

  <Resource name="jdbc/archiva"
        auth="Container"
        type="javax.sql.DataSource"
        username="sa"
        password=""
        driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
        url="jdbc:derby:${path to db folder}/archiva;create=true" />

  <Resource name="mail/Session"
        auth="Container"
        type="javax.mail.Session"
        mail.smtp.host="localhost"/>
</Context> 

Это должно быть все, и я надеюсь, что я ничего не забыл упомянуть. Поискав в catalina.out для журналов ошибок является своего рода бессмысленным, так как сообщения там не описывают явные проблемы, поэтому я хочу предложить прочитать localhost.${date}.log в том же каталоге я мог найти отладочную информацию, которая была намного полезнее.

ps: после установки Archiva сделал те же самые шаги для Apache Continuum, просто заменив имена папок и имен файлов, что также привело к запуску установки.

Happy Install, ура!

Другие вопросы по тегам