問題タブ [open-liberty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ibm-mobilefirst - CDI は単純なアダプターでは機能しません
server.xmlファイルに CDI 機能を追加しました<feature>cdi-1.2</feature>
。
私のmavenモジュールには、フォルダー内にbeans.xmlが含まれています。<module_name>/src/main/resources/META-INF
これは beans.xml のコンテンツです。
しかし、@Inject
アノテーションを使用すると機能しません.Beanは常にnull
.
コード:
編集:
それは私の豆です
MFPJAXRSApplication
クラスを拡張してjax-rsを初期化します
環境の詳細:
どうしたの?
java - WebSphere Liberty で間接 JNDI ルックアップをセットアップする方法は?
WebSphere Liberty 17.0.0.2 を使用しています。
最終製品は、JPA を使用してデータベースにアクセスする jar を含む ear です。
EntityManager には @PersistenceContext のアノテーションが付けられ、永続化ユニット名が定義されています。適切なpersistence-unitの下のpersistence.xmlでは、jta-data-sourceタグにserver.xmlで指定されたデータソース名(直接参照)が含まれています。このセットアップでは、すべてが正常に機能しています。
ここで、データソースの JNDI ルックアップ方法に関して、直接ルックアップから間接ルックアップに切り替える必要が生じました。私が理解しているように、間接参照はOS環境変数のようなものです。名前を使用して構成された値を取得するため、コードに手を加えずにデータソースを切り替えて、そこで JDNI 名を変更できます。
直接から間接に切り替えるには、jta-data-source の persistence.xml に「java:comp/env」を追加する必要があります。
データソース名を間接参照名に接続するにはどうすればよいですか? resource-ref タグを使用して server.xml で指定しようとしましたが、うまくいきませんでした。
ここでの主な目標は、コードで間接ルックアップを使用することですが、アプリケーション サーバー構成でデータソースを変更できるようにすることです。そのため、これが起こっているときにアプリケーションを変更する必要はありません。
構成スニペット:
このセットアップを実行すると、javax.naming.NameNotFoundException がスローされます。
更新 #1
name、binding-name を交換した後の server.xml
jta-data-source は java:comp/env/jdbc/mydb です
解決
EntityManager を取得するために使用された Bean は CDI Bean であることが判明しました。EJB Bean になるように変更されているため、ejb-jar.xml と ibm-ejb-jar-bnd.xml がうまく機能します。