2011-02-02 10 views
3

私はJboss5.1.x、EJB3.0を使用しています 私はQuartzを設定しようとしています。 私が検索を実行しようとするとき、私はこの例外を取得:Quartz - ClassCastException

 InitialContext ctx = new InitialContext(); 
     StdScheduler scheduler = (StdScheduler) ctx.lookup("Quartz"); 

これは例外です:

とjava.lang.ClassCastException:org.quartz.impl.StdSchedulerはorg.quartzにキャストすることはできません。スケジューラ

誰もが考えている?

ありがとうございました。

答えて

4

クラスパスにQuartz JARのコピーが2つあります - JBossには独自のコピーがあり、アプリケーションにはlibディレクトリにもコピーされている可能性があります。 2人は衝突している。

アプリケーションからJARを削除し、もう一度やり直してください。

+0

私のアプリケーションにあるものを削除すると、このJarファイルからライブラリが必要になります。 – rayman

+0

@rayman:あなたのコンパイルクラスパスと、展開可能なアプリケーションでパッケージ化されるものは、全く異なる2つのものです。必要なクォーツJARをコンパイルしますが、WAR/EARにパッケージ化しないでください。 – skaffman

1

あなたがJNDIにバインドされたスケジューラを持っているので、それはですので、あなたはこれを行う必要があります:あなたはこのtutorialに従うことによって、正しく石英を設定している

Scheduler scheduler = (Scheduler) ctx.lookup("Quartz"); 

チェック。

0

解決策は、quartzserviceをMETA-INFのjboss-service.xmlに設定することです。

<module> 
    <service>quartzservice.sar</service> 
</module> 

これだけです。サービスは拘束され、EAR全体から使用することができます。

+0

jboss-service.xmlにあるべきではありませんか? – rayman

+0

@rayman ya、right right – Manoj