1

grails を使用した本番環境では、次のエラーが断続的に発生します。指定されたドメイン クラスの get メソッドがないと表示されます。これは、毎分約 300 回実行されるコードで数日に 1 回発生します。再現できませんでした。

No signature of method: static DomainClass.get() is applicable for argument types: (java.lang.Long) values: [97]

他の誰かがこの問題に遭遇しましたか? grails 1.3.6 を使用しています。ドメイン クラスの ID は gorm のデフォルトです。Sun jvm バージョン 1.6.0_17-b04 を実行しています。

アップデート:

今日エラーが発生したときにもう少し知りました。JMS grails プラグインを使用していますが、JMS メッセージを受信して​​いるクラスの 1 つでエラーが発生します。grails がアプリケーションのブートストラップを完了する前に、JMS プラグインがメッセージの配信を開始したようです。grails の起動時にキューにメッセージがある場合、ログに例外が表示され始めます。grails が完全に開始されると、エラーは停止し、メッセージは正常に処理されます。私の推測では、ドメイン クラスに動的メソッドが追加される前に、grails 内のスプリング コンテキストが開始されます。

4

2 に答える 2

0

ドメインクラスのIDはGORMのデフォルトであるとおっしゃったように、hvgotcodesが指摘するGrails Jiraのバグは、あなたの場合には当てはまりません(文字列IDを処理します)。

おそらくどこかにあると思いますが、get()メソッドに転送された引数は「ロングタイプ」ではありません。たとえば、GET / POSTメソッド(GORMのデフォルト)によって転送されるパラメーター「id」は文字列型であり、使用する前にLongに変換する必要があります。

例えば:

def id = params.id
def object = DomainClass.get(id as Long)
于 2011-02-19T02:16:57.877 に答える
0

この問題に遭遇している可能性があります

http://jira.codehaus.org/browse/GRAILS-4467

少し奇妙なのは、これが時々しか起こらないことです。失敗している実際のメソッドが頻繁に呼び出されていると確信していますか?

于 2011-02-18T17:48:27.017 に答える