2011-03-03 6 views
0

私に同行してください、私は.netから来て、Javaの世界に新しいです。JAXライブラリがプロジェクトに追加されたときにHibernateが死ぬ

私はDALとして休止状態を使用するSpring MVC 3ウェブサイトを持っています。私はプロジェクトにWebサービスパッケージを追加しようとしています。

ここに問題があります。私のソリューション(私のサービスプロジェクトクラスにREST-JAXメソッドを追加できるライブラリ)にcoreとjaxb JAX-RSライブラリを追加すると、休止状態はプロジェクト全体(私のWebサイトが含まれています)で動作しなくなります。 DB(findbyblah())に問い合わせるすべてのhibernate呼び出しは、NullPointerExceptionをスローします。これらの両方のコアライブラリを削除してクリーンで再構築すると、私のウェブサイトが再び動作するようになります。

私のサイトからいくつかのサービスメソッドを実装できるだけでよい。誰かが私を正しい方向に向けることができますか?ありがとうございました。

UPDATE:ここではスタックトレースです:AGAIN

java.lang.NullPointerException 
    com.myeclipse.hibernate.ServicetypeDAO.findAll(ServicetypeDAO.java:100) 
    com.indixium.models.RegistrationModel.<init>(RegistrationModel.java:27) 
    com.indixium.controllers.RegisterController.get(RegisterController.java:29) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 

はUPDATE:

http://www.hildeberto.com/2008/05/hibernate-and-jersey-conflict-on.html

その休止状態を説明します

だから私は有望に見える2件の記事が見つかりましたジャージーは両方ともasm.jarを使用しますが、d異なるバージョンでは、矛盾する動作が存在する理由です。

この競合を解決するには、cglib.jarではなくcglib-nodep.jarを使用し、JerseyでASMバージョン3.xを使用してください。 cglib-nodep.jarには、cglib.jarで要求されるいくつかのASMクラスが含まれており、クラス名の競合を避けるためにパッケージ名を変更します。

残念ながら、私は残念ながら、各ライブラリに別のjarをどのように「使用するか」はわかりません。これに関する助けに感謝します。

私が見つけた2番目の解決策は、pom.xmlファイルを修正することです(これもやり方はわかりません)。私は自分のプロジェクトと私のハードドライブ全体でpom.xmlというファイルを検索しました。 pom.xmlを変更するにはどうすればよいですか?ここでは第二の溶液へのリンクは次のとおりです。

http://blog.idm.fr/2009/04/jersey-hibernate-conflict.html

誰かが私はこれらのいずれかを実装するのに役立つことができれば、それははるかに高く評価されるだろう。ありがとう。

+0

これらのJAXライブラリについて詳しく説明してください。 JAX-RSについて話していますか?どの実装を使用していますか? NPEのスタックトレースとは何ですか? – FelixM

+0

はい、JAX-RS(CoreとJAXB v.1.0.3.1の両方)。ここにスタックのトレース..(コメントが長すぎる、私は私の質問を更新する) – kmehta

答えて

0

JAX-RSアプローチを廃止しました。私は現在、自分のサイト内にサービスを作成するために、組み込みのSpring MVC 3 @RequestBody属性を使用しています。

@RequestBodyは、Webメソッドが解析され、ビューディクショナリに渡されるルーティングエンジンではなく、出力ストリームに直接書き込むようにします。

私は自分のサービス専用のコントローラを作成し、それを@RequestMapping( "/ services")と帰属させました。このコントローラー内のすべてのWebメソッドは@RequestBodyで装飾されているため、直接的なデータ出力が返されます。

0

NPEの原因となっている(ServicetypeDAO.java:100)のコードを調べることから始めますが、ライブラリを含めてアプリケーションを破壊するのは奇妙です。

pom.xmlがない場合は、IDEを使用していると仮定します。 pom.xmlmavenプロジェクトファイルで、プロジェクトの構成を維持するために使用され、mavenがプロジェクトのテスト/パッケージ/ビルドをビルド/実行するために使用されます。

私は最初の原則から始めてPOMを書いて、mavenを使ってIDEのプロジェクト設定を生成します。 IDEからPOMを生成すると、一般的には複雑すぎるPOMが生成されますが、それを自分で実行すると、プロジェクトに必要なアーチファクトをより適切に制御できます。また、コマンドラインからビルド/デプロイすることで問題を調査するときに、IDEを式から外すこともできます。

POMでは、プロジェクトに必要なJARファイルのバージョンを指定することができます。この場合、依存関係がパッケージ化されていないバージョンがあります。

関連する問題