2016-07-29 12 views
1

Grails 2.5.0アプリケーションで、ActiveMQとJMSを使用して組み込みのミドルウェアを作りたいと思っています。 したがって、私はJMSとactiveMQ用のプラグインをインストールしました。 コントローラからは、jmsServiceにメッセージを送信しています。キュー内のデータを受信するためにリスナーが作成されています。データはJSONデータです。このデータには、さまざまなドメインオブジェクトを使用して保持する必要のあるデータが多数含まれています。 データがコントローラからリスナに正しく伝播されました。Grails JMSメッセージがデータを永続化できない

問題は、私が関連するサービスメソッドをデータで呼び出すと、多くの休止状態の例外が発生することです。 しかし、サービスメソッドがコントローラ付きのコントローラから直接呼び出されると、すべてが完璧になります。

私は、いくつかのセッションの競合や、それと似た何かの休止状態のセッションの喪失があると思われます。

問題を取り除く手助けができますか?私はメッセージコンバータを追加することによって、私の問題を解決することができまし

[01:51:45.072] ERROR org.hibernate.AssertionFailure an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) 
org.hibernate.AssertionFailure: null id in com.mycomp.domain.Client entry (don't flush the Session after an exception occurs) 
    at org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:82) 
    at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:190) 
    at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:147) 
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219) 
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99) 
    at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58) 
    at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1185) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1261) 
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.FindPersistentMethod$1.doInHibernate(FindPersistentMethod.java:163) 
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:407) 
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339) 
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.FindPersistentMethod.doInvokeInternal(FindPersistentMethod.java:103) 
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractStaticPersistentMethod.invoke(AbstractStaticPersistentMethod.java:79) 
    at org.codehaus.groovy.grails.orm.hibernate.metaclass.AbstractStaticPersistentMethod.invoke(AbstractStaticPersistentMethod.java:72) 
    at org.codehaus.groovy.grails.orm.hibernate.HibernateGormStaticApi.find(HibernateGormStaticApi.groovy:570) 

答えて

0

エラーメッセージは次のようになります。 後で私はラクダのケースを使用してコードを変更しました。 私はコントローラからActiveMQへのすべてのメッセージをプッシュし、データを選択したラクラクシケースを使用してターゲットサービスに送信しました。

関連する問題