Комбинирующая комета на сервере Glassfish - PullRequest
3 голосов
/ 31 октября 2010

я получаю следующую ошибку

#|2010-10-31T19:13:38.127+0530|SEVERE|glassfish|javax.enterprise.system.container.web|_ThreadID=15;_ThreadName=Thread-3;|StandardWrapperValve[Grizzly Cometd Servlet]: PWC1406: Servlet.service() for servlet Grizzly Cometd Servlet threw exception
java.lang.IllegalStateException: Make sure you have enabled Comet or make sure the Thread invoking that method is the same a the request Thread.
 at com.sun.grizzly.comet.CometContext.addCometHandler(CometContext.java:263)
 at com.sun.grizzly.cometd.servlet.CometdServlet.doPost(CometdServlet.java:159)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
 at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:431)
 at org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:462)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
 at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
 at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
 at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
 at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
 at com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633)
 at com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570)
 at com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827)
 at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152)
 at com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71)
 at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
 at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
 at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
 at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
 at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
 at com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
 at com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)
|#]

[#|2010-10-31T19:14:51.754+0530|SEVERE|glassfish|javax.enterprise.system.container.web|_ThreadID=15;_ThreadName=Thread-3;|StandardWrapperValve[Grizzly Cometd Servlet]: PWC1406: Servlet.service() for servlet Grizzly Cometd Servlet threw exception
java.lang.IllegalStateException: Make sure you have enabled Comet or make sure the Thread invoking that method is the same a the request Thread.
 at com.sun.grizzly.comet.CometContext.addCometHandler(CometContext.java:263)
 at com.sun.grizzly.cometd.servlet.CometdServlet.doPost(CometdServlet.java:159)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
 at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:431)
 at org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:462)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
 at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
 at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
 at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
 at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
 at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
 at com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633)
 at com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570)
 at com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827)
 at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152)
 at com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71)
 at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
 at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
 at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
 at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
 at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
 at com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
 at com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)
|#]

Использую следующее в domain.xml

<http-listener default-virtual-server="server" server-name="" address="0.0.0.0" port="%%%HTTP_PORT%%%" id="http-listener-1">
   <!-- added by akshay -->
   <property name="cometSupport" value="true"/>
   <!-- done -->
  </http-listener>
        <http-listener default-virtual-server="server" enabled="false" security-enabled="true" server-name="" address="0.0.0.0" port="%%%HTTP_SSL_PORT%%%" id="http-listener-2">
          <ssl ssl3-enabled="false" cert-nickname="s1as" />
    <!-- added by akshay -->
   <property name="cometSupport" value="true"/>
   <!-- done -->
        </http-listener>
        <http-listener default-virtual-server="__asadmin" server-name="" address="0.0.0.0" port="%%%ADMIN_PORT%%%" id="admin-listener">
   <!-- added by akshay -->
   <property name="cometSupport" value="true"/>
   <!-- done -->
  </http-listener>

Ответы [ 3 ]

7 голосов
/ 13 сентября 2012

Включение поддержки кометы в консоли Web Admin

  1. Запустите сервер GlassFish, перейдите в консоль веб-администратора (по умолчанию: localhost: 4848 /) в браузере.
  2. На панели «Общая задача» слева выберите «Конфигурация» -> «Network Config» -> «Сетевые прослушиватели» -> «http-listener-1»
  3. В «Редактировать прослушиватель сети» выберите вкладку «HTTP».
  4. На вкладке «HTTP» установите флажок «Поддержка кометы»
  5. Нажмите кнопку «Сохранить» (вверху кадра)

Готово!

3 голосов
/ 01 ноября 2010

Я не уверен, как структура domain.xml должна быть структурирована в GF 3.x, но чтобы включить поддержку кометы, вы должны использовать следующую команду:

Включение Comet

Перед запуском приложения с поддержкой Comet необходимо включить Comet в прослушивателе HTTP для вашего приложения, установив специальный атрибут в соответствующей конфигурации протокола.В следующем примере показана команда asadmin set, которая добавляет этот атрибут:

asadmin set server-config.network-config.protocols.protocol.http-1.http.comet-support-enabled="true"

Замените имя протокола на http-1.

Я бы попробовал это с чистой domain.xml (т.е. не редактируется вручную).

Ссылки

0 голосов
/ 22 марта 2014

В дополнение к предыдущим ответам.

Я попрошу вас проверить, соответствует ли кометная банка, которую вы используете для компиляции своего приложения, кометной реализации в glassfish.

Например, я сделал 2 ошибки:

  1. Я включил кометный кувшин в файл войны (он должен использоваться только для скомпилировать проект)

  2. Я использовал неправильную (устаревшую) версию кометы реализация ('com.sun.grizzly: grizzly-comet: 1.9.59') для компиляции проект для GF-4.0.

Проблема была исправлена ​​обновлением библиотеки до: 'Org.glassfish.main.grizzly: GlassFish-гризли-экстра-всего: 4,0'

...