0

Jelastic環境のGlassfishサーバーでWeb アプリケーション( MyCronTest) を実行しています。この Web アプリケーションには、 cron-jobで定期的に呼び出したいサーブレット () が含まれています。/test

だから私はJelasticのドキュメントからこのチュートリアルに従いましたが、 Glassfishの代わりにTomcatを使用していて、パスとどのファイルをどこに置くべきかよくわかりません...そして今、私は迷っています;)

サーブレット
ブラウザでサーブレットを直接呼び出すと、次の行が出力されますSystem.out

test executed at 05/03/2014 15:00

実行するbashファイルというbashスクリプト
を作成し、ディレクトリに配置しました:myCronJob.shglassfish3/temp

#!/bin/bash
curl http://myGlassfish.jelastic.dogado.eu/MyCronTest/test;

もちろん、私はそれをテストしました。それは実行可能であり、動作します(少なくとも自分のコンピューターで実行した場合)。

チュートリアル
に よると、cron イベント スケジューラを編集する必要があるファイルがあります。まあ、私は(私が推測している)同じことをするべきであることを見つけました。/cron/tomcat/cron/glassfish

# IMPORTANT NOTE!
# Please make sure there is a blank line after the last cronjob entry.
*/1 * * * * /opt/glassfish3/temp/myCronJob.sh

彼らが私に言ったように、私は最後に空の行を追加しました。私もそれを試してみました

*/1 * * * * /bin/bash /opt/glassfish3/temp/myCronJob.sh

彼らがチュートリアルで提案したように。しかし、まだ出力はありません。エラーはありません..ログファイルを空にするだけです。

私がここで何が欠けているのか誰にも分かりますか? 私は何か間違ったことをしていますか?

ソリューション/編集

Damien's Answerのおかげで、ようやく問題を絞り込むことができました。実際に問題を引き起こしたのは、私のbashスクリプトの行でした:

curl http://myGlassfish.jelastic.dogado.eu/MyCronTest/test;

になるはずだった

curl http://localhost/MyCronTest/test;

ファイアウォールでブロックされたので。幸運なことに、Glassfish は同じマシン / 環境で実行されているため、localhost動作します。
他のすべては正しいです。

4

1 に答える 1

1

まあ、私は /cron/glassfish を見つけました (私は推測しています) 同じことをするはずです。

正しい。

しかし、まだ出力はありません。エラーはありません..ログファイルを空にするだけです。

ファイルを に正しくアップロードしたと仮定して/opt/glassfish3/temp/myCronJob.sh、cron 出力を自分のログ ファイルに送信するか、メールで送信することをお勧めします。

MAILTO="your@email.com"
*/1 * * * * /opt/glassfish3/temp/myCronJob.sh 2&1 > /opt/glassfish3/glassfish/nodes/localhost-domain1/instance-168458181/logs/cronoutput.log

PTR (リバース DNS) がないなどの理由で、メールがスパム フィルターによってフィルター処理される可能性があることに注意してください。ただし、このようにテスト/デバッグ目的で使用しても問題ありません (これらのメールが通過することに依存しないでください)。致命的!)

これらのヒントが役に立たない場合は、ホスティング プロバイダーのサポート チームに連絡して、.sh ファイルのアクセス許可、手動で実行した場合の出力、および cron ログ ファイルの内容を確認することをお勧めします (これらすべてをサポートできるのはサポート チームだけです)。

于 2014-03-05T17:47:21.820 に答える