問題タブ [cdi]
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.
web-services - ロガーの注入、溶接
標準のロガー初期化をインジェクションに置き換えようとしています
1位
ステートレスBean/Webサービスで溶接溶接ロギングを使用しようとしていました
しかし、それは私には機能しません..私はjava.lang.reflect.InvocationTargetExceptionを取得します
javax.servlet.ServletException:java.lang.reflect.InvocationTargetException at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:326)at org.glassfish.webservices.monitoring.WebServiceTesterServlet.invoke(WebServiceTesterServlet.java:102) )org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:110)at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)at com.sun.grizzly.http.servlet.FilterChainImpl.doFilter( FilterChainImpl.java:195)at com.sun.grizzly.http.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:139)at com.sun.grizzly.http.servlet.ServletAdapter.doService(ServletAdapter.java:376)at com com.sun.grizzly.tcp.http11.GrizzlyAdapterの.sun.grizzly.http.servlet.ServletAdapter.service(ServletAdapter.java:329)。service(GrizzlyAdapter.java:166)at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java: 245)com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)at com.sun.grizzly.http.ProcessorTask .process(ProcessorTask.java:954)at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)atcom.sun。 grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)atcom.sun.grizzly.http.HttpProtocolChain。execute(HttpProtocolChain.java:76)at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)at com.sun.grizzly.ContextTask .run(ContextTask.java:69)at com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:330)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:309 )at java.lang.Thread.run(Thread.java:619)原因:java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:297)... 24 more原因:javax.xml.ws.soap.SOAPFaultException:javax.ejb.EJBException at com.sun.xml .ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:189)at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:130)at com.sun.xml.ws.client.sei.SyncMethodHandler .invoke(SyncMethodHandler.java:119)at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub .java:140)at $ Proxy484.sayHello(Unknown Source)... 29 more原因:javax.ejb.EJBException at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5070)at com.sun .ejb.containers.BaseContainer。completeNewTx(BaseContainer.java:4968)at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4756)at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:200)at$Proxy464。 sayHello(Unknown Source)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava。 lang.reflect.Method.invoke(Method.java:597)at org.glassfish.webservices.InvokerImpl.invoke(InvokerImpl.java:78)at org.glassfish.webservices.EjbInvokerImpl.invoke(EjbInvokerImpl.java:78)at com com.sun.xml.ws.server.sei.EndpointMethodHandlerの.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)。comb(EndpointMethodHandler.java:257)at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:95)at com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber。 java:629)at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573) com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)at org .glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:138)at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)at com.sun.xml.ws.api .pipe.Fiber .__ doRun(Fiber.java:629)at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber .doRun(Fiber.java:573)at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber。java:470)at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)at com.sun.xml.ws.tx.service.TxServerPipe.process(TxServerPipe.java: 306)com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)at com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:629) com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)at com.sun .xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)at com.sun.enterprise .security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:195)at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:127)atcom.sun.xml.ws.api。pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)at com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:629)atcom.sun.xml.ws.api.pipe。 fiber._doRun(Fiber.java:588)at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)at com.sun.xml.ws.api.pipe.Fiber.runSync( Fiber.java:470)at com.sun.xml.ws.server.WSEndpointImpl $ 2.process(WSEndpointImpl.java:295)at com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java :519)com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:288)at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:143) )org.glassfish.webservices.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:116)at org.glassfish.webservices.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)atorg.glassfish。webservices.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:196)at org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:127)... 22 more原因:java.lang.NullPointerException at ua.eset.inferno.heresy .ws.security.Hello.sayHello(Hello.java:33)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1056)atorg.glassfish。 com.sun.ejb.containers.BaseContainerのejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1128)。com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:615)at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)at com.sun .ejb.EjbInvocation.proceed(EjbInvocation.java:567)at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:157)at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy .java:139)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava。 com.sun.ejb.containers.interceptorsのlang.reflect.Method.invoke(Method.java:597)。AroundInvokeInterceptor.intercept(InterceptorManager.java:858)at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java: 367)com.sun.ejb.containers.BaseContainer .__ intercept(BaseContainer.java:5215)at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)at com.sun.ejb.containers.WebServiceInvocationHandler .invoke(WebServiceInvocationHandler.java:188)...66詳細__intercept(BaseContainer.java:5215)at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:188)... 66もっと__intercept(BaseContainer.java:5215)at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)at com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:188)... 66もっと
何が欠けていますか?
2位
これを参照しているこのチュートリアルを試すよりも-カスタムインジェクション
しかし、それも役に立ちません。
Mavenの依存関係-
Q1:ejb / Webサービスでの溶接ロガー注入のルールは何ですか?
Q2:wsdl / EJB / WebServiceの問題でしょうか?
jakarta-ee - Glassfish Web アプリケーションでの EJB インジェクション
@EJB アノテーションを使用して ejb.jar ファイルに EJB へのリモート参照を挿入しようとしているアプリがあります。一貫性のない結果が得られます。あるケースでは、呼び出される web.xml にリスナーがあり、EJB に接続してその上でメソッドを呼び出していることがわかるため、EJB が正しく注入されているようです。別のクラス (struts2 アクション) で、EJB 参照にアクセスしようとすると NPE が発生します。私が知る限り、それらは同じ .war ファイルに存在する Java クラスの同一の呼び出しです。
回避策として、グローバル JNDI 名で EJB をルックアップするコードをコンストラクターに追加したところ、正常に動作しました。ある @EJB が機能し、別の @EJB が機能しない理由がわかりません。
java - CDI を使用して外部ライブラリから Bean を注入する方法は?
JSR-299 CDI を使用して、外部ライブラリから (注釈なしの) Bean を注入するにはどうすればよいですか?
例:
インターフェイス X とその実装は、サード パーティのライブラリから取得されます。どの実装を使用するかを決定するにはどうすればよいですか?
X インターフェイスを使用しているが実装が異なる複数のクラスがある場合はどうなりますか?
jsf - CDIタイムアウトによりNPEが発生する
(JSF 2で)会話のタイムアウトをキャッチしてユーザーを新しいページにリダイレクトする方法はありますか?会話がタイムアウトすると、厄介なNullPointerExceptionsが発生します。
すべてのNPEでユーザーをリダイレクトできましたが、それはネットが大きすぎるようです。
spring - Spring と javax.enterprise.inject の関係は?
ここでJava EEアプリケーションサーバーに関するウィキペディアの記事を読んでいました。
http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Java_EE_5_certified
Java App Services が実装する 2 つの API は次のとおりです。
これらは両方とも、アプリケーション コンテキストと依存性注入 JSR-299 に関連しています。これらの API については聞いたことがありませんでした。Spring はこれらの API を実装していますか? もしそうなら、それは誰にとっても重要ですか?
java - CDI/JSF と JAX-RS?
CDI/JSF2 アプリケーションで RESTful サービスを使用したいと考えています。私は JAX-RS にあまり詳しくありませんが、そのライフサイクルが CDI/JSF2 とうまく機能しないことを読みました。JEE6 スタックに JAX-RS と CDI/JSF2 を組み込むことは可能ですか? そうでない場合、代替手段はありますか?
ありがとう
jakarta-ee - Weld を使用してシリアル化できないクラス (java.util.ResourceBundle など) を注入する方法
ローカライズされた文字列を簡単に取得するために、任意のクラスに java.util.ResourceBundle を挿入できるプロデューサーを作成したいと考えています。私の ResourceBundle-Producer は次のようになります。
Locale と FacesContext のインジェクションが機能します (Seam 3 Alpha Source から対応するプロデューサーを取得しました)。残念ながら、ResourceBundle は Serializable ではないため、この方法で生成することはできません。ResourceBundle を使用する Bean を呼び出す JSF ページにアクセスしようとすると、Weld から次のエラーが発生します。
Caused by: org.jboss.weld.IllegalProductException: WELD-000054 Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans\\n\\nProducer\: org.jboss.weld.bean-/D:/Program Files (x86)/GlassFish-Tools-Bundle-For-Eclipse-1.2/glassfishv3/glassfish/domains/teachernews/applications/teachernews/-ProducerMethod-services.producers.ResourceBundleProducer.getResourceBundle()\\nInjection Point\: field web.PersonHome.bundle
ResourceBundleResolver を機能させる方法はありますか? または、同様の機能を実現する他のメカニズムはありますか? 前もって感謝します!
編集:
わかりました、ほとんど獲得できなかったポイントの一部を使用します ;) この問題の適切な回避策も受け入れます!
Producer の作成が機能しない別の例があります: FlashProducer です。Flash はシリアル化できないため、FacesContext-Flash も生成できません。
cdi - CDI リソースはどこで宣言すればよいですか?
JSR-299 (CDI) はリソースの (残念ながら命名された) 概念を導入します: http://docs.jboss.org/weld/reference/1.0.0/en-US/html/resources.html#d0e4373
You can think of a resource in this nomenclature as a bridge between the Java EE 6 brand of dependency injection (@EJB, @Resource, @PersistenceContext and the like) and CDI's brand of dependency injection.
The general gist seems to be that somewhere (and this will be the root of my question) you declare what amounts to a bridge class: it contains fields annotated both with Java EE's @EJB or @PersistenceContext or @Resource annotations and with CDI's @Produces annotations. The net effect is that Java EE 6 injects a persistence context, say, where it's called for, and CDI recognizes that injected PersistenceContext as a source for future injections down the line (handled by @Inject).
My question is: what is the community's consensus--or is there one--on:
- what this bridge class should be named
- where this bridge class should live
- whether it's best to localize all this stuff into one class or make several of them
...?
Left to my own devices, I was thinking of declaring a single class called CDIResources
and using that as the One True Place to link Java EE's DI with CDI's DI. Many examples do something similar, but I'm not clear on whether they're "just" examples or whether that's a good way to do it.
Thanks.
inversion-of-control - CDI(WELD)を使用して依存関係の解決をカスケードする方法
すべてのサービスなどを保持する中央の溶接コンテナが欲しいのですが。ただし、このコンテナは、ローカル設定を含む2番目のコンテナによってラップされます。目標は、外部コンテナーに依存関係が見つからない場合、内部コンテナーを検索したいと思います。
どうすればこれを達成できますか?非標準のWELD拡張機能の使用に戻らずに、スタンドライクな方法で物事を実行したいと思います。
guice - CDI(WELD)には、(Guiceモジュールで行われるように)定義を作成してからインジェクターを作成するのに相当するものがありますか?
Guiceが、コードで独自のバインディングを実行して独自のモジュールを手動で作成する方法が気に入っています。一方、CDIは、sestバインディングへのプログラムによるアクセスではなく、魔法に依存しているようです。私は間違っていますか、またはWELDで同じ効果をどのように達成できますか?
コードサンプルをいただければ幸いです...
明確化
http://code.google.com/p/google-guice/でGuiceによって提供されたビルダーパターンスタイルを使用して、プログラムでモジュール(Guice用語申し訳ありませんがCDI用語がわかりません)を構築したいと思っていました。
私は動的システムを構築していますが、Weldがクラスパスなどを動的にスキャンして型を見つけて登録するのではなく、型(インターフェイスなど)や定数などをバインドできるようにする必要があります。CDIは静的であると思います。javax.injectパッケージには、プログラムで型を実装にバインドできるインターフェースは含まれていません。
明確化パート2
元の質問の基本的な前提は、注釈が焼き付けられており、イネクターを支援するために注釈に定義されているルールを変更できないという単純な観察でした。私は当初、CDIクラスパススキャナーが内部使用の定義を構築するために使用するのと同じインターフェイスへのパブリックアクセスを望んでいました。基本的には、アノテーションを読み取ってコンテナーの定義を作成できるレイヤーが必要です。デフォルトのプロバイダーは、現在行われていることを実行するプロバイダーである可能性がありますが、他の戦略が必要な場合は、これを実行する可能性があります。
現在のアプローチの問題の1つは、異なるアノテーションを持つコンポーネント(クラス)を再利用して異なるコラボレーターを選択できないという制限です。ジャンプする前に、このステートメントを修飾させてください。そうです、プロバイダーなどで実行できますが、これにより、より多くのアーティファクトが発生します。もっと簡単な方法があるはずです。
例1
この例が不十分な場合は申し訳ありませんが、私のユースケースははるかに複雑であり、詳細が邪魔になり、はるかに長く読むことができます。
引数のために次のようないくつかのパラメータを持つURL書き換えコンポーネントがあると想像してください
- このパターンをそのパターンに置き換えます。
- 多分htmlクリーナー
この同じコンポーネントに2つの異なる置換ルールを注入したいが、htmlクリーナーインジェクターを使用したい場合は、行き詰まります。確かにこれを回避する方法はありますが、もちろんより多くのコードであるアーティファクトが必要です。
残念ながら、すべてのバインディングルールはインスタンスではなくクラスにあるため、クラスを要求するたびに、機能的に同等のインスタンスが返されます。
溶接
この質問は少し前に書かれたもので、Weldをあきらめました。魔法がどのように行われるかを指示する方法は間違っていると思います。いつ、どのようにこのアクションを繰り返したいかを制御する方法を提供せずに、これがどのように発生するかを彼らが私に指示するという事実は好きではありません。私はこの柔軟性の欠如が好きではありません。