Продолжаем «полировать» Alfresco…

Статистика посещений моего блога показывает, что наиболее читаемыми являются мои записки про Alfresco. По этому, продолжаю описывать свою эпопею по установке и настройке этой EMS. Собственно, установив Alfresco и запуская его, я продолжал читать файл протокола alfresco.log. И нашел в своем вот такие строки:

11:27:21,879 ERROR [org.alfresco.util.exec.RuntimeExecBootstrapBean] Bootstrap command failed:
Execution result:
   os:         Linux
   command:    "soffice" "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" "-env:UserInstallation=file://oouser" -nologo -headless -nofirststartwizard -nocrashrep -norestore
   succeeded:  false
   exit code:  2
   out:

   err:        Cannot run program ""soffice"": java.io.IOException: error=2, No such file or directory

То бишь, хоть и старался я, и угадывал, какой же путь к Open Office указать при установке, все это, увы, оказалось безрезультатно! Как видно из приведенного фрагмента лога — «Файл не найден» — утверждает программа! Чтож, будем искать! Первым направлением «поисков» было традиционное слово — «пути». Дело происходило отнюдь не вчера, и некоторые детали я уже и не помню. Но, по моему, все таки именно я, следуя совету уж не помню из какого форума, создал в «стандартной» папке /usr/bin т.н. «жесткую ссылку» на программу soffice. А может быть и не я, а сама процедура установки Open Office. Одним словом, не помешает проверить ее наличие, и если там ссылки нет, то создать ее командой:

ln -s /opt/openoffice.org3/program/soffice /usr/bin/soffice

После этого проблем с запуском Open Office (в том числе и из консоли) нет — где бы ни был, кто бы не запускал — Open Office стартует на ура. Перезапускаю Alfresco, смотрю в лог — сообщение об ошибке осталось — «программа не найдена». Ну что за беда! Смущали меня лишь кавычки вокруг имени программы (soffice) — их почему-то было аж по паре с каждой из сторон. Поиск по форуму Alfresco подтвердил — мои сомнения были не напрасны. Как оказалось, это баг в файле, запускающем Open Office из Alfresco. Итак, идем в папку /opt/Alfresco/tomcat/shared/classes/alfresco/extension/bootstrap, находим в ней файл openoffice-startup-context.xml и смотрим его содержимое. Точнее, ту его часть, которая определяет значение «openOfficeStartupCommand». Вот так она выглядит в «родном» виде из архива:


   <bean id="openOfficeStartupCommand" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandMap">
<map>
<entry key=".*">
<value><![CDATA["soffice" "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" "-env:UserInstallation=file://oouser" -nologo -headless -nofirststartwizard -nocrashrep -norestore]]></value>
</entry>
</map>
</property>

Сама команда, запускающая Open Office, приведена в строке, начинающейся с «<value><![CDATA[…» (и т.д.). И именно в ней присутствуют эти самые кавычки. Я их в приведенном выше фрагменте файла для наглядности выделил красным. Вот именно эти кавычки и нужно убрать! ВНИМАНИЕ! Строка длинная, поэтому, просмотрите ее всю — в ней нужно убрать ТРИ ПАРЫ кавычек! Удаляем их все раз и навсегда! И, сохранивши файл openoffice-startup-context.xml, перезапускаем Alfresco. И вот, после выполнения данных изменений фрагмент моего лога стал выглядеть таким образом:


18:47:15,115 WARN  [org.alfresco.util.OpenOfficeConnectionTester] An initial OpenOffice connection could not be established.
18:47:15,636 INFO  . . .
18:47:15,637 WARN  . . .
18:47:15,651 INFO  . . .
18:47:17,312 WARN  . . .
18:48:32,384 INFO  [org.alfresco.util.OpenOfficeConnectionTester] The OpenOffice connection was re-established.

Как мы видим в последней строке цитаты, «соединение с Open Office восстановлено». То еть, все ОК!…