ささいな質問ですが、ここにあります。<h:inputTextArea value="bean.status" disabled="true"/>
私のビューで(richfacesを使用して)を使用して、データベースで行われたさまざまな挿入/更新の進行状況を表示したいと思います。これは、属性とステータスメッセージを追加するメソッドをBean
持つバッキングBeanです。status
public void addMessage(String message) {
status = status.concat(message + "\n");
}
プロセスを開始する「移行」ボタンがあります。私の問題は、テキスト領域がmigratorメソッドの最後でのみ更新されることです。必要なのは、status
が更新されるたびに、入力テキスト領域も更新されることです。それで...
1-それを行う方法は?
2-これを実装するためのより良い方法はありますか?
RichFacesコンポーネントリファレンスによると、必要なものは次のとおりです。
セットアッププッシュ
サーバー側またはクライアント側のアプローチを使用する
メッセージプロデューサーを実装する
プッシュメッセージを処理する
だから私はしました:
ランタイム依存関係のインストール(Atmosphere):-Mavenでatmosphere-runtime-1.0.0.beta4依存関係を追加しました
プッシュサーブレットの登録-サーブレット3.0には必要ありませんが、web.xmlに手動設定を追加しました。
プッシュサーブレットorg.richfaces.webapp.PushServlet1true
メッセージを起動するために、プッシュCDIイベントメカニズムを使用したサーバー側のアプローチを選択しました。Status.javaをメッセージプロデューサーになるように更新しました。
インポートjava.io.Serializable; インポートjavax.enterprise.context.SessionScoped; インポートjavax.enterprise.event.Event; インポートjavax.inject.Inject; インポートjavax.inject.Named; import org.richfaces.cdi.push.Push;
@Named @SessionScoped publicclassStatusはSerializableを実装します{
@Inject @Push(topic = "statusPush") Event<String> pushEvent; private String status; public void addMessage(String message) { //Everytime the status is updated... status = status.concat(message + "\n"); //... the message is sent to the topic sendMessage(message); } public void sendMessage(String message) { pushEvent.fire(message); } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; }
}
ビューでのメッセージの処理:
<a4j:push address="statusPush" onerror="alert(event.rf.data)"> <a4j:ajax event="dataavailable" render="statusOutput" /> </a4j:push> <h:inputTextarea id="statusOutput" value="#{status.status}" cols="80" rows="20" disabled="true"/>
すべて設定されているようですが、移行プロセスを開始するボタンをクリックすると、次のスタックトレースが表示されます。
警告:StandardWrapperValve [Faces Servlet]:PWC1406:サーブレットFacesのServlet.service()サーブレットが例外com.google.common.collect.ComputationException:javax.faces.FacesException:SerialContext [myEnv={の'/ConnectionFactory'のルックアップに失敗しましたjava.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory、java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl、java.naming.factory。 url.pkgs = com.sun.enterprise.naming} at com.google.common.collect.ComputingConcurrentHashMap $ ComputingMapAdapter.get(ComputingConcurrentHashMap.java:397)at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl.createTopic( JMSTopicsContextImpl.java:281)(org.richfaces.application.push.TopicsContext.getOrCreateTopic(TopicsContext.java:48))(org.richfaces)。application.push.impl.SessionImpl.createSubscriptions(SessionImpl.java:190)at org.richfaces.application.push.impl.SessionImpl.subscribe(SessionImpl.java:185)at org.richfaces.resource.PushResource.encode(PushResource。 java:88)at org.richfaces.resource.UserResourceWrapperImpl.encode(UserResourceWrapperImpl.java:188)at org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:229)at javax.faces.webapp.FacesServlet.service(FacesServlet .java:591)at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)atorg.apache.catalina。 core.StandardContextValve.invoke(StandardContextValve.java:175)at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)at org.apache.catalina.connector.CoyoteAdapter .doService(CoyoteAdapter.java:331)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)at com.sun.enterprise.v3.services.impl.ContainerMapper $ AdapterCallable.call(ContainerMapper.java :317)com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)atcom.sun。 grizzly.comet.CometEngine.executeServlet(CometEngine.java:459)at com.sun.grizzly.comet.CometEngine.handle(CometEngine.java:316)at com.sun.grizzly.comet.CometAsyncFilter.doFilter(CometAsyncFilter。java:87)at com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171)at com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143)at com.sun.grizzly.arp .AsyncProcessorTask.doTask(AsyncProcessorTask.java:102)at com.sun.grizzly.http.TaskBase.run(TaskBase.java:193)at com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175)at com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler.java:145)at com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210)at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain。 java:137)at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)atcom.sun。grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)at com .sun.grizzly.ContextTask.run(ContextTask.java:71)at com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:513)at java.lang.Thread.run(Thread.java:722)原因:javax.faces.FacesException:SerialContext [myEnv={java.naming.factory。 initial = com.sun.enterprise.naming.impl.SerialInitContextFactory、java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl、java.naming.factory.url.pkgs=com。太陽。org.richfaces.application.push.impl.jms.JMSTopicsContextImpl $ 1.apply(JMSTopicsContextImpl.java:207)at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl $ 1.apply(JMSTopicsContextImpl.java: 195)com.google.common.collect.ComputingConcurrentHashMap $ ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)at com.google.common.collect.ComputingConcurrentHashMap $ ComputingSegment.compute(ComputingConcurrentHashMap.java:184)at com.google.common .collect.ComputingConcurrentHashMap $ ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153)at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69)at com.google.common.collect.ComputingConcurrentHashMap $ ComputingMapAdapter.get(Computing .java:393)..。39 more原因:javax.naming.NamingException:SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory、java.naming.factoryの'/ConnectionFactory'のルックアップに失敗しました。 state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl、java.naming.factory.url.pkgs = com.sun.enterprise.naming} [ルート例外はjavax.naming.NameNotFoundException:]atcomです。 sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)atcom.sun.enterprise.naming.impl。 SerialContext.lookup(SerialContext.java:654)at javax.naming.InitialContext.lookup(InitialContext.java:415)at javax.naming.InitialContext.lookup(InitialContext.java:415)at org.richfaces.application.push.impl .jms。JMSTopicsContextImpl $ JMSTopicContext.createConnection(JMSTopicsContextImpl.java:98)at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl $ JMSTopicContext.start(JMSTopicsContextImpl.java:123)atorg.richfaces.application.push.impl.jms。 JMSTopicsContextImpl $ 1.apply(JMSTopicsContextImpl.java:199)... 45 more原因:javax.naming.NameNotFoundException:at com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:310)at com.sun .enterprise.naming.impl.TransientContext.lookup(TransientContext.java:218)at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl com.sun.enterprise.naming.impl.SerialContextの.lookup(LocalSerialContextProviderImpl.java:119)。lookup(SerialContext.java:505)...52詳細
結論:JMS(私は思う)はstatusPush
トピックを見つけることができません。
更新:web.xmlでJMSを有効にし、次のように変更しました
<context-param>
<param-name>org.richfaces.push.jms.enable</param-name>
<param-value>true</param-value>
</context-param>
そして今、スタックトレースは次のとおりです。
警告:StandardWrapperValve [AutoRegisteredPushServlet]:PWC1406:サーブレットAutoRegisteredPushServletのServlet.service()は、org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:171)で例外java.lang.RuntimeException:java.lang.NullPointerExceptionをスローしました。 org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:166)at org.atmosphere.container.GrizzlyCometSupport.service(GrizzlyCometSupport.java:119)atorg。atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:248) .atmosphere.container.GlassFishWebSocketSupport.service(GlassFishWebSocketSupport.java:110)at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1257)at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:293)org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:279)at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)at javax.servlet.http.HttpServlet.service(HttpServlet.java :770)org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)atorg.apache.catalina.core。 StandardContextValve.invoke(StandardContextValve.java:175)at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)at org .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)atorg.apache。catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)at com.sun.enterprise.v3.services.impl.ContainerMapper $ AdapterCallable.call(ContainerMapper.java:317)atcom.sun.enterprise.v3.services。 impl.ContainerMapper.service(ContainerMapper.java:195)at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)at com.sun.grizzly.comet.CometEngine.executeServlet(CometEngine.java:459) com.sun.grizzly.comet.CometEngine.handle(CometEngine.java:316)at com.sun.grizzly.comet.CometAsyncFilter.doFilter(CometAsyncFilter.java:87)at com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters (DefaultAsyncExecutor.java:171)at com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143)at com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:102)com.sun.grizzly.http.TaskBase.run(TaskBase.java:193)at com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175)at com.sun.grizzly.arp.DefaultAsyncHandler .handle(DefaultAsyncHandler.java:145)at com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210)at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)atcom.sun。 grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)at com .sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)atcom.sun.grizzly。ContextTask.run(ContextTask.java:71)at com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java: 513)at java.lang.Thread.run(Thread.java:722)原因:org.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)のjava.lang.NullPointerException(org.atmosphere.util.AtmosphereFilterChain) .doFilter(AtmosphereFilterChain.java:154)at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)at org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)at handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)... 40 more71)com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)at java.lang.Thread .run(Thread.java:722)原因:org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:154)のorg.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)のjava.lang.NullPointerException )at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)at org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)at org.atmosphere.handler.ReflectorServletProcessor java:168)...40以上71)com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)at java.lang.Thread .run(Thread.java:722)原因:org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:154)のorg.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)のjava.lang.NullPointerException )at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)at org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)at org.atmosphere.handler.ReflectorServletProcessor java:168)...40以上doWork(AbstractThreadPool.java:532)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)at java.lang.Thread.run(Thread.java:722)原因:java.lang .NullPointerException at org.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)at org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:154)at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilter :131)org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)at org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)... 40 moredoWork(AbstractThreadPool.java:532)at com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)at java.lang.Thread.run(Thread.java:722)原因:java.lang .NullPointerException at org.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)at org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:154)at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilter :131)org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)at org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)... 40 more513)at java.lang.Thread.run(Thread.java:722)原因:org.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)atorg.atmosphere.util.AtmosphereFilterChainのjava.lang.NullPointerException .doFilter(AtmosphereFilterChain.java:154)at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)at org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)at handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)... 40 more513)at java.lang.Thread.run(Thread.java:722)原因:org.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)atorg.atmosphere.util.AtmosphereFilterChainのjava.lang.NullPointerException .doFilter(AtmosphereFilterChain.java:154)at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)at org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)at handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)... 40 moredoFilter(AtmosphereFilterChain.java:154)at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)at org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)atorg。 .ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)... 40 moredoFilter(AtmosphereFilterChain.java:154)at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)at org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)atorg。 .ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)... 40 more