GraniteDS with Tomcat 7, I get this error?

898 views
Skip to first unread message

philip

unread,
Feb 15, 2011, 10:07:55 AM2/15/11
to Granite Data Services Forum
Hi,

I am trying to run on Tomcat 7 with the Maven plugin, why do I get
this error?

<plugin>
<groupId>com.googlecode.t7mp</groupId>
<artifactId>maven-t7-plugin</artifactId>
<version>0.9.6</version>

15/02/2011 11:06:47 PM org.granite.logging.JdkLogger info
INFO: Initializing GraniteDS...
15/02/2011 11:06:47 PM org.granite.logging.JdkLogger info
INFO: GraniteDS initialized
15/02/2011 11:06:47 PM com.sun.faces.config.ConfigureListener
contextInitialized
INFO: Initializing Mojarra 2.0.0 (RC b16) for context '/APP-1.0-
SNAPSHOT'
15/02/2011 11:06:48 PM com.sun.faces.spi.InjectionProviderFactory
createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present.
ManagedBeans methods marked with these annotations will have said
annotations processed.
15/02/2011 11:06:48 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet GravityServlet as unavailable
15/02/2011 11:06:48 PM org.apache.catalina.core.StandardContext
loadOnStartup
SEVERE: Servlet /APP-1.0-SNAPSHOT threw load() exception
java.lang.ClassNotFoundException: org.apache.catalina.CometProcessor
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:
1666)

Franck Wolff

unread,
Feb 15, 2011, 10:52:13 AM2/15/11
to gran...@googlegroups.com
With Tomcat 7, you should use the servlet 3.0 (org.granite.gravity.async.GravityAsyncServlet) version instead of the deprecated Tomcat specific servlet.

Change your web.xml accordingly.

Franck.

2011/2/15 philip <phili...@gmail.com>



--
Franck Wolff
Granite Data Services
24, rue de l'Est
75020 Paris
+33 (0)1 40 33 76 77

mxa

unread,
Mar 6, 2011, 5:43:49 PM3/6/11
to Granite Data Services Forum
Hey,
I'm using also tomcat 7.0.8 with the spring,jpa, hibernate archetype
to create the project.
org.granite.gravity.async.GravityAsyncServlet is not available. I
tried the org.granite.gravity.servlet3.GravityAsyncServlet but when I
start the app I get an error:

javax.servlet.ServletException: Asynchronous requests are not
supported with this servlet. Please check your web.xml
at
org.granite.gravity.servlet3.GravityAsyncServlet.doPost(GravityAsyncServlet.java:
57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
306)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
240)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
161)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
164)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
100)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
541)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
383)
at
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:
284)
at org.apache.coyote.http11.Http11AprProtocol
$Http11ConnectionHandler.process(Http11AprProtocol.java:322)
at org.apache.tomcat.util.net.AprEndpoint
$SocketProcessor.run(AprEndpoint.java:1684)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

anything else that I need to configure?

Thanks in advance
Max

On 15 Feb., 16:52, Franck Wolff <franck.wo...@graniteds.org> wrote:
> With Tomcat 7, you should use the servlet 3.0
> (org.granite.gravity.async.GravityAsyncServlet) version instead of the
> deprecated Tomcat specific servlet.
>
> Change your web.xml accordingly.
>
> Franck.
>
> 2011/2/15 philip <philip14...@gmail.com>

Ronaldo Rigoni ...

unread,
Mar 6, 2011, 10:11:14 PM3/6/11
to gran...@googlegroups.com
You need to declare async-support like this in your web.xml
<servlet>
    <description>The servlet class used for Producer/Consumer operations</description>
    <servlet-name>GravityServlet</servlet-name>
    <servlet-class>org.granite.gravity.servlet3.GravityAsyncServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>

Install apr libraries for tomcat, or the NioConnector.


Ronaldo.
[]'s,
Ronaldo Rigoni
Analista de Sistemas - Banco Central

Dr.Drane

unread,
Mar 21, 2011, 1:04:54 PM3/21/11
to Granite Data Services Forum
I have exactly the same issue with Tomcat 7.0.11 and enabling async
support just throws another error stating that async is not supported:

21-mrt-2011 17:59:04 org.apache.catalina.core.StandardWrapperValve
invoke
SEVERE: Servlet.service() for servlet [GravityServlet] in context with
path [/GdsRoo] threw exception [Asynchronous requests are not
supported with this servlet. Please check your web.xml] with root
cause
javax.servlet.ServletException: Asynchronous requests are not
supported with this servlet. Please check your web.xml
at
org.granite.gravity.servlet3.GravityAsyncServlet.doPost(GravityAsyncServlet.java:
57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
304)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:
113)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
76)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:
77)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
76)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:
88)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
76)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
240)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
164)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
498)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
164)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
100)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
562)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
394)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
243)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint
$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)


Any ideas? Thx!!

My web.xml should be correct according to this thread:
<servlet>
<description>The servlet class used for Producer/Consumer
operations</description>
<servlet-name>GravityServlet</servlet-name>
<servlet-class>org.granite.gravity.servlet3.GravityAsyncServlet</
servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>

<servlet-mapping>
<servlet-name>GravityServlet</servlet-name>
<url-pattern>/gravityamf/*</url-pattern>
</servlet-mapping>

On Mar 7, 4:11 am, "Ronaldo Rigoni ..." <rrig...@gmail.com> wrote:
> You need to declare async-support like this in your web.xml
> <servlet>
>     <description>The servlet class used for Producer/Consumer
> operations</description>
>     <servlet-name>GravityServlet</servlet-name>
>
> <servlet-class>org.granite.gravity.servlet3.GravityAsyncServlet</servlet-cl ass>
>     <load-on-startup>1</load-on-startup>
> *    <async-supported>true</async-supported>*
>   </servlet>
>
> Install apr libraries for tomcat, or the NioConnector.
>
> Ronaldo.
> []'s,
> Ronaldo Rigoni
> Analista de Sistemas - Banco Centralhttp://www.ronaldorigoni.com.br

wdrai

unread,
Mar 21, 2011, 1:11:43 PM3/21/11
to Granite Data Services Forum
The Gravity servlet should not be filtered by all the Spring stuff
(OpenSessionInView, etc.) for many reasons :
1. It should not be filtered by the OpenSessionInViewFilter (you will
lose all the benefits of GraniteDS support of lazy loading by always
loading the whole object graph by Spring)
2. The Spring filters are not marked async-supported
3. It should not be filtered at all ;)

Check your Spring config and disable all these filters.


> I have exactly the same issue with Tomcat 7.0.11  and enabling async
> support just throws another error stating that async is not supported:
>
> 21-mrt-2011 17:59:04 org.apache.catalina.core.StandardWrapperValve
> invoke
> SEVERE: Servlet.service() for servlet [GravityServlet] in context with
> path [/GdsRoo] threw exception [Asynchronous requests are not
> supported with this servlet. Please check your web.xml] with root
> cause
> javax.servlet.ServletException: Asynchronous requests are not
> supported with this servlet. Please check your web.xml
>         at
> org.granite.gravity.servlet3.GravityAsyncServlet.doPost(GravityAsyncServlet .java:
> 57)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio nFilterChain.java:
> 304)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC hain.java:
> 210)
>         at
> org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterI nternal(OpenEntityManagerInViewFilter.java:
> 113)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest Filter.java:
> 76)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio nFilterChain.java:
> 243)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC hain.java:
> 210)
>         at
> org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(Hidd enHttpMethodFilter.java:
> 77)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest Filter.java:
> 76)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio nFilterChain.java:
> 243)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC hain.java:
> 210)
>         at
> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(Cha racterEncodingFilter.java:
> 88)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest Filter.java:
> 76)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio nFilterChain.java:
> 243)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC hain.java:
> 210)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j ava:
> 240)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j ava:
> 164)
>         at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBas e.java:
> 498)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> 164)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> 100)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
> 562)
>         at
Message has been deleted

Roman Malko

unread,
Apr 8, 2013, 4:52:01 AM4/8/13
to gran...@googlegroups.com
I had the same issue.
Try to remove all filters from your web.xml file - it will resolve issue.
But if you want to use Spring Security or any other filters the Gravity won't work.

I resolve this issue to create another project with name JmsGateway, and put into it only Gravity functionality with ActiveMQ.

By other words - you have three projects - Flex, ServerProject (GraniteDS with Spring + Security (or any other framework)) and JmsGateway.

Flex uses JmsGateway only for gravity messaging. JmsGateway is listening ActiveMQ. If you need to tell flex users when some data on the ServerProject has changed - you send message to ActiveMQ, and this message will receive by JmsGateway and will send gravity message to all flex users.

If you need I can create and upload somewhere examples.


вторник, 15 февраля 2011 г., 17:07:55 UTC+2 пользователь philip написал:

Tomislav Pokrajcic

unread,
Apr 10, 2013, 10:47:24 PM4/10/13
to gran...@googlegroups.com
Hi Roman,
I'm just trying to solve the same problem and would appreciate if you could post some examples.
Thnx,

Tomislav

Roman Malko

unread,
Apr 11, 2013, 3:40:32 AM4/11/13
to gran...@googlegroups.com
Okey, here the steps:
1. Install activemq (http://activemq.apache.org/) and start it (on mac it is simple to run activemq/bin/sh activemq start)
2. Copy activemq-all-5.8.0.jar from Activemq installation directory to Tomcat/lib
3. Add these lines to Tomcat/conf/context.xml:

<ResourceLink global="jms/ConnectionFactory" name="jms/ConnectionFactory" />
<ResourceLink global="jms/topic/MyTopic" name="jms/topic/MyTopic" />

and these lines to Tomcat/conf/server.xml:

<Resource auth="Container" brokerName="LocalActiveMQBroker" brokerURL="tcp://localhost:61616" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" name="jms/ConnectionFactory" type="org.apache.activemq.ActiveMQConnectionFactory" useEmbeddedBroker="false"/>
<Resource auth="Container" factory="org.apache.activemq.jndi.JNDIReferenceFactory" name="jms/topic/MyTopic" physicalName="MY.TEST.FOO" type="org.apache.activemq.command.ActiveMQTopic"/>

4. Install JmsGateway project (this project is attached) into your workspace, create war and deploy it on Tomcat. Run Tomcat.
5. Now Create a Flex project, add granite swcs to classpath, copy services-config.xml from JmsGateway to this project, load it by using Flex Compiler arguments like this -services ../WebContent/WEB-INF/flex/services-config.xml
6. Create org.granite.gravity.Consumer object in Flex project like this

var consumer : Consumer = new Consumer();
consumer.destination = "gravity";
consumer.topic = "MY.TEST.FOO"; 
consumer.subscribe();
consumer.addEventListener(MessageEvent.MESSAGE, messageHandler); 

7. Then go to 0.0.0.0:8161/admin - its admin web form for ActiveMQ (username and password are admin).
8. Go to "Topic" section. There you should see topic list and the "MY.TEST.FOO" name should present.
9. Now try to send messages to this topic. The messageHandler in the flex should invoked.



четверг, 11 апреля 2013 г., 5:47:24 UTC+3 пользователь Tomislav Pokrajcic написал:
JmsGateway.zip

Roman Malko

unread,
Apr 11, 2013, 3:52:06 AM4/11/13
to gran...@googlegroups.com
Tomorrow I will publish a spring project example that just sending messages to ActiveMQ.

darwinjob

unread,
Nov 14, 2013, 8:10:05 AM11/14/13
to gran...@googlegroups.com
Will the trick with UrlRewriteFilter work?
Reply all
Reply to author
Forward
0 new messages