Как зарегистрироваться (установить) в качестве служебного Java-приложения с оболочкой JSVC в MacOS X

У меня есть приложение, которое я хочу запустить как службу в MacOS X. Я использовал JSVC в качестве оболочки, и в настоящее время он отлично запускается в консоли, процесс завершения работы правильный и т. д. Так что теперь я должен зарегистрировать его как службу. Нашел какие-то мануалы, написал файл .plist. Далее я выполнил

sudo launchctl load /Library/LaunchDaemons/my.service.plist
sudo launchctl start my.service

И ничего не произошло. Служба не запущена.

содержимое плиста:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.service</string>
<key>ProgramArguments</key>
<array>
<string>/servertest/MYService</string>
<string>-jvm</string>
<string>server</string>
<string>-outfile</string>
<string>out.txt</string>
<string>-errfile</string>
<string>err.txt</string>
<string>-verbose</string>
<string>-debug</string>
<string>-home</string>
<string>/System/Library/Frameworks/JavaVM.framework/Home</string>
<string>-cp</string>
<string>./lib/hsqldb.jar:./lib/my-wrapper.jar:./lib/commons-daemon-1.0.8.jar</string>
<string>my.service.DaemonMac</string>
</array>
<key>WorkingDirectory</key>
<string>/servertest</string>
<key>StandardOutPath</key>
<string>/servertest/stdout.log</string>
<key>StandardErrorPath</key>
<string>/servertest/stderr.log</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

Что я делаю не так?


person Aleksandr Kravets    schedule 13.03.2012    source источник
comment
Что произойдет, если вы попытаетесь использовать абсолютные пути, а не относительные   -  person mmmmmm    schedule 13.03.2012
comment
Я использую абсолютные пути в plist. Относительные — это аргументы, передаваемые в JVM. Это не имеет значения, я пробовал абсолютные пути везде и получил тот же результат.   -  person Aleksandr Kravets    schedule 13.03.2012


Ответы (1)


Ладно, думаю, никто не знает. Во всяком случае, я справился с этим сам. Вот пример, который работал у меня:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <false/>
    <key>Label</key>
    <string>myserver</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/MYServer/MYServer</string>
        <string>-server</string>
        <string>-outfile</string>
        <string>/opt/MYServer/out.txt</string>
        <string>-errfile</string>
        <string>/opt/MYServer/err.txt</string>
        <string>-verbose</string>
        <string>-debug</string>
        <string>-nodetach</string>
        <string>-home</string>
        <string>/System/Library/Frameworks/JavaVM.framework/Home</string>
        <string>-cp</string>
        <string>/opt/MYServer/lib/hsqldb.jar:/opt/MYServer/lib/my-wrapper.jar:/opt/MYServer/lib/commons-daemon-1.0.8.jar</string>
        <string>my.service.DaemonMac</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/opt/MYServer/stderr.log</string>
    <key>StandardOutPath</key>
    <string>/opt/MYServer/stdout.log</string>
    <key>WorkingDirectory</key>
    <string>/opt/MYServer</string>
</dict>
</plist>
person Aleksandr Kravets    schedule 26.04.2012
comment
Так что же отличалось? Ваши собственные параметры получают абсолютные пути, что-то еще? Нам, читателям, было бы легче увидеть разницу, благодаря которой приведенный выше plist заработал. - person akauppi; 15.10.2014
comment
@akauppi Я бы обязательно переработал свой ответ, если бы вы спросили два года назад. Но поскольку этот вопрос недостаточно интересен для широкой огласки, чтобы получить какие-либо голоса, я не буду делать различия и вспоминать, что было не так. Простите меня за это :-) - person Aleksandr Kravets; 20.10.2014
comment
абсолютно понял :) - person akauppi; 20.10.2014