2017-05-12 8 views
0

私はWeblogic Server上にアプリケーションを持っています。 RESTWEBserviceからSOAPwebserviceにEJBを注入する際に問題があります。 このアプリケーションにはいくつかのモジュールがあります。今はそのうちの3つだけが重要です。別のモジュールでも同じアプリケーションから@EJBを注入する

展開は、次のようになります。

アプリケーション

  • API(JAR)
  • SOAPWebService(WAR)
  • RESTWebService(WAR)

どちらのウェブサービスはAPIを持っているそれらに組み込まれています。 ここにクラスの重要な部分があります。 私は注入したい私のRestWebserviceのEJB:

@Local(EJBSOAPinterface.class) 
@Stateless(mappedName = "RESTCLASS", name="RESTCLASS") 
public class RESTCLASS implements EJBSOAPinterface{...} 

APIのインターフェイスは、両方のモジュールを使用しWICH:

@Local 
public interface EJBSOAPinterface{....} 

私は

public SOAPCLASS { 
@EJB(lookup="JNDINAME..") 
EJBSOAPinterface ejb; 
......} 

にEJBを注入したいSOAPのwebserviceModule @Localと@Remoteの両方をインタフェースとEJBの両方で使用しようとしました。それは仕事をしません。

私はそれがいずれかの作業をいけない

public SOAPCLASS{ 
@EJB(name="RESTCLASS") 
EJBSOAPinterface ejb; 
.....} 

aswell EJBを注入するために、これを試してみました。 問題は、SOAPCLASSがその注入のために展開されないことです。 私のやり方によって違う例外が発生します。しかし、現在、私はjava.lang.InstantiationExceptionを取得しています: "....."という名前のBeanを作成中にエラーが発生しました .....依存性注入失敗:クラスインタフェース "....."に関するBean定義を見つけることができません

はい。私はjavaにちょっと新しいです。そして、どんな助けも役に立つでしょう!この問題を解決する方法について! ありがとう!

+0

どのようなjndi名を使用しましたか?起動時に、 'EJBSOAPinterface'に利用可能なjndi名を出力する出力があるはずです。すべて試してみるべきです。 –

+0

weblogic Serverのバインディング名を確認しています。 RESTCLASS#INTERFACEPACKETNAME.EJBSOAPinterface – hannehanen

+0

のようなもの.warの名前(もしあれば.ear)を含む他の名前があるはずです –

答えて

0

UPDATE - SOLVED。 @Localの代わりに@Remoteをインターフェイスに配置しました。そして、EJB自体についても同じことが言えます。私が持っていたJNDI名は正しい(RESTCLASS#INTERFACEPACKETNAME.EJBSOAPINTERFACE)。

問題は、WLServerでアプリケーションをデプロイするときに、RESCLASSより前にSOAPCLASSをデプロイしたということでした。 これは、まだJNDI名が見つかりませんでした。まだ造られていなかったので。 私はその2のデプロイメント順序を変更しました。すぐに機能しました。 ありがとう!

関連する問題