Grailsでアプリを作成しましたが、クォーツに問題があります。DBからユーザーをフェッチし、その後、サーバーもフェッチします。サーバーがある場合は、それぞれのPINGコマンドを確認したいのですが、次のようなメッセージが表示されます。
JobRunShell ^ 549 | 走る 。。org.quartz.simpl.SimpleThreadPool$WorkerThreadで
IllegalStateExceptionが原因:スレッドにバインドされたリクエストが見つかりません:実際のWebリクエストの外部でリクエスト属性を参照していますか、それとも最初に受信したスレッドの外部でリクエストを処理していますか?実際にWebリクエスト内で操作していて、それでもこのメッセージを受信する場合は、コードがDispatcherServlet / DispatcherPortletの外部で実行されている可能性があります。この場合、RequestContextListenerまたはRequestContextFilterを使用して現在のリクエストを公開します。->> 131 | org.springframework.web.context.request.RequestContextHolderのcurrentRequestAttributes "
これは私のコードです:
def execute() {
pingService.checkPing()
}
def checkPing = {
User user = User.findByLogin(session.user.login) //get user
def hostsToPing = importFromDB()
if (!hostsToPing.isEmpty()) {
hostsToPing.each {host ->
doPing(host)
}
} else {
//something else
}
}
def importFromDB = {
User user = User.findByLogin(session.user.login)
def hostsList = Host.findAllByUser(user)
hostsList
}
def doPing(Host host) {
println "InetAdress: " + InetAddress.getByName(host.hostAdress)
println "InetAdress is Rea: " + InetAddress.getLocalHost().isReachable(1000)
}
次のような場合、この問題はありません。
def doPing(Host host) {
println "InetAdress: " + InetAddress.getByName("www.google.com")
println "InetAdress is Reachable : " + InetAddress.getLocalHost().isReachable(1000)
}
誰かが何が悪いのか知っていますか?