atmosphere-jersey-guice-jetty

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

atmosphere-jersey-guice-jetty

Christopher Piggott
Hi,

I want to play with atmosphere, but I'm not sure how to hook it
together in the jersey-guice environment.  I'm statically configuring
Jetty as follows:

                Server server = new Server(); /* this is an org.eclipse.jetty.server.Server */

                Connector connector = new SelectChannelConnector();
                connector.setPort(9999);
                server.addConnector(connector);

                WebAppContext webapp = new WebAppContext();
                webapp.setContextPath("/");
                webapp.setResourceBase(".");

                /* Note: jersey-guice comes in as a filter, not a servlet: */
                webapp.addFilter(com.google.inject.servlet.GuiceFilter.class, "/*",
FilterMapping.REQUEST);
                webapp.addEventListener(new HomeSrvContextListener());
                webapp.setParentLoaderPriority(true);
                server.setHandler(webapp);
                server.start();


When I tried to run this, every request returned 503 Service
Unavailable, and I saw this log entry:

WARN  org.eclipse.jetty.util.log - Failed startup of context
o.e.j.w.WebAppContext{/,file:/home/chrisp/work/java/homesrv/trunk/}
javax.servlet.ServletException: Servlets must be bound as singletons.
Key[type=org.atmosphere.guice.AtmosphereGuiceServlet,
annotation=[none]] was not bound in singleton scope.

so I thought ok, no problem ... modify the servlet configuration to
try to bind it as a singleton:

                bind(AtmosphereGuiceServlet.class).in(Scopes.SINGLETON);
                serve("*").with(AtmosphereGuiceServlet.class, params);

My first question has to do with me having to bind
AtmosphereGuiceServlet in this manner.  Is this correct and necessary?


From here, things go horribly wrong, and I'm not sure why.  The log of
warnings is insane, and I don't want to bomb the mailing list with
them but here are a few snippets:


11:33:52.674 [main] DEBUG o.a.guice.AtmosphereGuiceServlet - failed to
add Jersey init parameters to Atmosphere servlet
com.google.inject.ConfigurationException: Guice configuration errors:

1) No implementation for java.util.Map<java.lang.String,
java.lang.String> annotated with
@com.google.inject.name.Named(value=org.atmosphere.guice.AtmosphereGuiceServlet.properties)
was bound.
  while locating java.util.Map<java.lang.String, java.lang.String>
annotated with @com.google.inject.name.Named(value=org.atmosphere.guice.AtmosphereGuiceServlet.properties)


This section repeats over and over:


11:33:52.726 [main] INFO  o.a.h.ReflectorServletProcessor - Installing
Servlet null
11:33:52.726 [main] DEBUG org.eclipse.jetty.util.log - loaded class
com.google.inject.servlet.GuiceFilter
11:33:52.726 [main] DEBUG org.eclipse.jetty.util.log - loaded class
com.google.inject.servlet.GuiceFilter from
sun.misc.Launcher$AppClassLoader@1ea2dfe
11:33:52.727 [main] INFO  o.a.h.ReflectorServletProcessor - Installing
Filter GuiceFilter
11:33:52.727 [main] INFO  org.atmosphere.cpr.AtmosphereServlet -
initializing atmosphere framework: 0.7.2
11:33:52.727 [main] DEBUG org.eclipse.jetty.util.log - loaded class
org.atmosphere.jersey.JerseyBroadcaster
11:33:52.728 [main] DEBUG org.eclipse.jetty.util.log - loaded class
org.atmosphere.jersey.JerseyBroadcaster from
sun.misc.Launcher$AppClassLoader@1ea2dfe
11:33:52.728 [main] INFO  org.atmosphere.cpr.AtmosphereServlet - using
default broadcaster class: class
org.atmosphere.jersey.JerseyBroadcaster
11:33:52.729 [main] INFO  org.atmosphere.cpr.AtmosphereServlet -
Atmosphere is using comet support:
org.atmosphere.container.Jetty7CometSupport running under container:
jetty/7.4.5.v20110725



Once it's done with that, it tells me stuff like:

11:33:55.405 [main] DEBUG org.eclipse.jetty.util.log - loaded class
java.lang.Class
11:33:55.405 [main] DEBUG org.eclipse.jetty.util.log - loaded class
java.lang.Class from null
(repeated hundreds of times)

hen, finally, when I want to make a request:

11:34:02.711 [main] WARN  org.eclipse.jetty.util.log - FAILED
com.google.inject.servlet.GuiceFilter-6561434:
java.lang.NoClassDefFoundError: Could not initialize class
sun.security.util.SecurityConstants
11:34:02.712 [main] WARN  org.eclipse.jetty.util.log - FAILED
o.e.j.w.WebAppContext{/,file:/home/chrisp/work/java/homesrv/trunk/}:
java.lang.NoClassDefFoundError: Could not initialize class
sun.security.util.SecurityConstants
11:34:02.712 [main] DEBUG org.eclipse.jetty.util.log - starting
SelectChannelConnector@0.0.0.0:9999 STOPPED
11:34:02.713 [main] DEBUG org.eclipse.jetty.util.log - starting
org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager@1ca209e
11:34:02.734 [main] DEBUG org.eclipse.jetty.util.log - STARTED
org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager@1ca209e
11:34:02.741 [main] WARN  org.eclipse.jetty.util.log - FAILED
SelectChannelConnector@0.0.0.0:9999 FAILED: java.net.BindException:
Address already in use
11:34:02.741 [main] WARN  org.eclipse.jetty.util.log - FAILED
org.eclipse.jetty.server.Server@1c9b9ca:
MultiException[java.lang.NoClassDefFoundError: Could not initialize
class sun.security.util.SecurityConstants,
java.lang.NoClassDefFoundError: Could not initialize class
sun.security.util.SecurityConstants]
11:34:02.742 [main] DEBUG org.eclipse.jetty.util.log - EXCEPTION
org.eclipse.jetty.util.MultiException: Multiple exceptions
        at org.eclipse.jetty.server.Server.doStart(Server.java:251)
~[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
~[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
        at com.autofrog.homesrv.HomeServe.run(HomeServe.java:58) [classes/:na]
        at com.autofrog.homesrv.HomeServe.main(HomeServe.java:65) [classes/:na]
11:34:02.742 [main] ERROR com.autofrog.homesrv.HomeServe - Server failed
org.eclipse.jetty.util.MultiException: Multiple exceptions
        at org.eclipse.jetty.server.Server.doStart(Server.java:251)
~[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
~[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
        at com.autofrog.homesrv.HomeServe.run(HomeServe.java:58) ~[classes/:na]
        at com.autofrog.homesrv.HomeServe.main(HomeServe.java:65) ~[classes/:na]

--Chrs
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: atmosphere-jersey-guice-jetty

Christopher Piggott
Oops.  I couldn't find documentation that explains this but I found a
newish class GuiceManagedAtmosphereServlet and when I did this:

                serve("*").with(GuiceManagedAtmosphereServlet.class, params);

it all started working.  I must have been using some combination of
new and old stuff.

I would like to disable the comments that come out though:

<!-- Welcome to the Atmosphere Framework. To work with all the
browsers when suspending connection, Atmosphere must output some data
to makes WebKit based browser working.-->



On Mon, Sep 5, 2011 at 11:38 AM, Christopher Piggott <[hidden email]> wrote:

> Hi,
>
> I want to play with atmosphere, but I'm not sure how to hook it
> together in the jersey-guice environment.  I'm statically configuring
> Jetty as follows:
>
>                Server server = new Server(); /* this is an org.eclipse.jetty.server.Server */
>
>                Connector connector = new SelectChannelConnector();
>                connector.setPort(9999);
>                server.addConnector(connector);
>
>                WebAppContext webapp = new WebAppContext();
>                webapp.setContextPath("/");
>                webapp.setResourceBase(".");
>
>                /* Note: jersey-guice comes in as a filter, not a servlet: */
>                webapp.addFilter(com.google.inject.servlet.GuiceFilter.class, "/*",
> FilterMapping.REQUEST);
>                webapp.addEventListener(new HomeSrvContextListener());
>                webapp.setParentLoaderPriority(true);
>                server.setHandler(webapp);
>                server.start();
>
>
> When I tried to run this, every request returned 503 Service
> Unavailable, and I saw this log entry:
>
> WARN  org.eclipse.jetty.util.log - Failed startup of context
> o.e.j.w.WebAppContext{/,file:/home/chrisp/work/java/homesrv/trunk/}
> javax.servlet.ServletException: Servlets must be bound as singletons.
> Key[type=org.atmosphere.guice.AtmosphereGuiceServlet,
> annotation=[none]] was not bound in singleton scope.
>
> so I thought ok, no problem ... modify the servlet configuration to
> try to bind it as a singleton:
>
>                bind(AtmosphereGuiceServlet.class).in(Scopes.SINGLETON);
>                serve("*").with(AtmosphereGuiceServlet.class, params);
>
> My first question has to do with me having to bind
> AtmosphereGuiceServlet in this manner.  Is this correct and necessary?
>
>
> From here, things go horribly wrong, and I'm not sure why.  The log of
> warnings is insane, and I don't want to bomb the mailing list with
> them but here are a few snippets:
>
>
> 11:33:52.674 [main] DEBUG o.a.guice.AtmosphereGuiceServlet - failed to
> add Jersey init parameters to Atmosphere servlet
> com.google.inject.ConfigurationException: Guice configuration errors:
>
> 1) No implementation for java.util.Map<java.lang.String,
> java.lang.String> annotated with
> @com.google.inject.name.Named(value=org.atmosphere.guice.AtmosphereGuiceServlet.properties)
> was bound.
>  while locating java.util.Map<java.lang.String, java.lang.String>
> annotated with @com.google.inject.name.Named(value=org.atmosphere.guice.AtmosphereGuiceServlet.properties)
>
>
> This section repeats over and over:
>
>
> 11:33:52.726 [main] INFO  o.a.h.ReflectorServletProcessor - Installing
> Servlet null
> 11:33:52.726 [main] DEBUG org.eclipse.jetty.util.log - loaded class
> com.google.inject.servlet.GuiceFilter
> 11:33:52.726 [main] DEBUG org.eclipse.jetty.util.log - loaded class
> com.google.inject.servlet.GuiceFilter from
> sun.misc.Launcher$AppClassLoader@1ea2dfe
> 11:33:52.727 [main] INFO  o.a.h.ReflectorServletProcessor - Installing
> Filter GuiceFilter
> 11:33:52.727 [main] INFO  org.atmosphere.cpr.AtmosphereServlet -
> initializing atmosphere framework: 0.7.2
> 11:33:52.727 [main] DEBUG org.eclipse.jetty.util.log - loaded class
> org.atmosphere.jersey.JerseyBroadcaster
> 11:33:52.728 [main] DEBUG org.eclipse.jetty.util.log - loaded class
> org.atmosphere.jersey.JerseyBroadcaster from
> sun.misc.Launcher$AppClassLoader@1ea2dfe
> 11:33:52.728 [main] INFO  org.atmosphere.cpr.AtmosphereServlet - using
> default broadcaster class: class
> org.atmosphere.jersey.JerseyBroadcaster
> 11:33:52.729 [main] INFO  org.atmosphere.cpr.AtmosphereServlet -
> Atmosphere is using comet support:
> org.atmosphere.container.Jetty7CometSupport running under container:
> jetty/7.4.5.v20110725
>
>
>
> Once it's done with that, it tells me stuff like:
>
> 11:33:55.405 [main] DEBUG org.eclipse.jetty.util.log - loaded class
> java.lang.Class
> 11:33:55.405 [main] DEBUG org.eclipse.jetty.util.log - loaded class
> java.lang.Class from null
> (repeated hundreds of times)
>
> hen, finally, when I want to make a request:
>
> 11:34:02.711 [main] WARN  org.eclipse.jetty.util.log - FAILED
> com.google.inject.servlet.GuiceFilter-6561434:
> java.lang.NoClassDefFoundError: Could not initialize class
> sun.security.util.SecurityConstants
> 11:34:02.712 [main] WARN  org.eclipse.jetty.util.log - FAILED
> o.e.j.w.WebAppContext{/,file:/home/chrisp/work/java/homesrv/trunk/}:
> java.lang.NoClassDefFoundError: Could not initialize class
> sun.security.util.SecurityConstants
> 11:34:02.712 [main] DEBUG org.eclipse.jetty.util.log - starting
> SelectChannelConnector@0.0.0.0:9999 STOPPED
> 11:34:02.713 [main] DEBUG org.eclipse.jetty.util.log - starting
> org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager@1ca209e
> 11:34:02.734 [main] DEBUG org.eclipse.jetty.util.log - STARTED
> org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager@1ca209e
> 11:34:02.741 [main] WARN  org.eclipse.jetty.util.log - FAILED
> SelectChannelConnector@0.0.0.0:9999 FAILED: java.net.BindException:
> Address already in use
> 11:34:02.741 [main] WARN  org.eclipse.jetty.util.log - FAILED
> org.eclipse.jetty.server.Server@1c9b9ca:
> MultiException[java.lang.NoClassDefFoundError: Could not initialize
> class sun.security.util.SecurityConstants,
> java.lang.NoClassDefFoundError: Could not initialize class
> sun.security.util.SecurityConstants]
> 11:34:02.742 [main] DEBUG org.eclipse.jetty.util.log - EXCEPTION
> org.eclipse.jetty.util.MultiException: Multiple exceptions
>        at org.eclipse.jetty.server.Server.doStart(Server.java:251)
> ~[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
>        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
> ~[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
>        at com.autofrog.homesrv.HomeServe.run(HomeServe.java:58) [classes/:na]
>        at com.autofrog.homesrv.HomeServe.main(HomeServe.java:65) [classes/:na]
> 11:34:02.742 [main] ERROR com.autofrog.homesrv.HomeServe - Server failed
> org.eclipse.jetty.util.MultiException: Multiple exceptions
>        at org.eclipse.jetty.server.Server.doStart(Server.java:251)
> ~[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
>        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
> ~[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
>        at com.autofrog.homesrv.HomeServe.run(HomeServe.java:58) ~[classes/:na]
>        at com.autofrog.homesrv.HomeServe.main(HomeServe.java:65) ~[classes/:na]
>
> --Chrs
>
ale
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: atmosphere-jersey-guice-jetty

ale
Try with:

@Suspend(outputComments = false)
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[[atmosphere-users]] Re: atmosphere-jersey-guice-jetty

Jeanfrancois Arcand-4
In reply to this post by Christopher Piggott
Salut,

the comment can be disabled by using

   @Suspend(outputComments="false")

as described here

http://atmosphere.java.net/nonav/apidocs/org/atmosphere/annotation/Suspend.html

Thanks

-- Jeanfrancois

On 11-09-05 9:13 AM, Christopher Piggott wrote:

> Oops.  I couldn't find documentation that explains this but I found a
> newish class GuiceManagedAtmosphereServlet and when I did this:
>
> serve("*").with(GuiceManagedAtmosphereServlet.class, params);
>
> it all started working.  I must have been using some combination of
> new and old stuff.
>
> I would like to disable the comments that come out though:
>
> <!-- Welcome to the Atmosphere Framework. To work with all the
> browsers when suspending connection, Atmosphere must output some data
> to makes WebKit based browser working.-->
>
>
>
> On Mon, Sep 5, 2011 at 11:38 AM, Christopher Piggott<[hidden email]>  wrote:
>> Hi,
>>
>> I want to play with atmosphere, but I'm not sure how to hook it
>> together in the jersey-guice environment.  I'm statically configuring
>> Jetty as follows:
>>
>>                 Server server = new Server(); /* this is an org.eclipse.jetty.server.Server */
>>
>>                 Connector connector = new SelectChannelConnector();
>>                 connector.setPort(9999);
>>                 server.addConnector(connector);
>>
>>                 WebAppContext webapp = new WebAppContext();
>>                 webapp.setContextPath("/");
>>                 webapp.setResourceBase(".");
>>
>>                 /* Note: jersey-guice comes in as a filter, not a servlet: */
>>                 webapp.addFilter(com.google.inject.servlet.GuiceFilter.class, "/*",
>> FilterMapping.REQUEST);
>>                 webapp.addEventListener(new HomeSrvContextListener());
>>                 webapp.setParentLoaderPriority(true);
>>                 server.setHandler(webapp);
>>                 server.start();
>>
>>
>> When I tried to run this, every request returned 503 Service
>> Unavailable, and I saw this log entry:
>>
>> WARN  org.eclipse.jetty.util.log - Failed startup of context
>> o.e.j.w.WebAppContext{/,file:/home/chrisp/work/java/homesrv/trunk/}
>> javax.servlet.ServletException: Servlets must be bound as singletons.
>> Key[type=org.atmosphere.guice.AtmosphereGuiceServlet,
>> annotation=[none]] was not bound in singleton scope.
>>
>> so I thought ok, no problem ... modify the servlet configuration to
>> try to bind it as a singleton:
>>
>>                 bind(AtmosphereGuiceServlet.class).in(Scopes.SINGLETON);
>>                 serve("*").with(AtmosphereGuiceServlet.class, params);
>>
>> My first question has to do with me having to bind
>> AtmosphereGuiceServlet in this manner.  Is this correct and necessary?
>>
>>
>>  From here, things go horribly wrong, and I'm not sure why.  The log of
>> warnings is insane, and I don't want to bomb the mailing list with
>> them but here are a few snippets:
>>
>>
>> 11:33:52.674 [main] DEBUG o.a.guice.AtmosphereGuiceServlet - failed to
>> add Jersey init parameters to Atmosphere servlet
>> com.google.inject.ConfigurationException: Guice configuration errors:
>>
>> 1) No implementation for java.util.Map<java.lang.String,
>> java.lang.String>  annotated with
>> @com.google.inject.name.Named(value=org.atmosphere.guice.AtmosphereGuiceServlet.properties)
>> was bound.
>>   while locating java.util.Map<java.lang.String, java.lang.String>
>> annotated with @com.google.inject.name.Named(value=org.atmosphere.guice.AtmosphereGuiceServlet.properties)
>>
>>
>> This section repeats over and over:
>>
>>
>> 11:33:52.726 [main] INFO  o.a.h.ReflectorServletProcessor - Installing
>> Servlet null
>> 11:33:52.726 [main] DEBUG org.eclipse.jetty.util.log - loaded class
>> com.google.inject.servlet.GuiceFilter
>> 11:33:52.726 [main] DEBUG org.eclipse.jetty.util.log - loaded class
>> com.google.inject.servlet.GuiceFilter from
>> sun.misc.Launcher$AppClassLoader@1ea2dfe
>> 11:33:52.727 [main] INFO  o.a.h.ReflectorServletProcessor - Installing
>> Filter GuiceFilter
>> 11:33:52.727 [main] INFO  org.atmosphere.cpr.AtmosphereServlet -
>> initializing atmosphere framework: 0.7.2
>> 11:33:52.727 [main] DEBUG org.eclipse.jetty.util.log - loaded class
>> org.atmosphere.jersey.JerseyBroadcaster
>> 11:33:52.728 [main] DEBUG org.eclipse.jetty.util.log - loaded class
>> org.atmosphere.jersey.JerseyBroadcaster from
>> sun.misc.Launcher$AppClassLoader@1ea2dfe
>> 11:33:52.728 [main] INFO  org.atmosphere.cpr.AtmosphereServlet - using
>> default broadcaster class: class
>> org.atmosphere.jersey.JerseyBroadcaster
>> 11:33:52.729 [main] INFO  org.atmosphere.cpr.AtmosphereServlet -
>> Atmosphere is using comet support:
>> org.atmosphere.container.Jetty7CometSupport running under container:
>> jetty/7.4.5.v20110725
>>
>>
>>
>> Once it's done with that, it tells me stuff like:
>>
>> 11:33:55.405 [main] DEBUG org.eclipse.jetty.util.log - loaded class
>> java.lang.Class
>> 11:33:55.405 [main] DEBUG org.eclipse.jetty.util.log - loaded class
>> java.lang.Class from null
>> (repeated hundreds of times)
>>
>> hen, finally, when I want to make a request:
>>
>> 11:34:02.711 [main] WARN  org.eclipse.jetty.util.log - FAILED
>> com.google.inject.servlet.GuiceFilter-6561434:
>> java.lang.NoClassDefFoundError: Could not initialize class
>> sun.security.util.SecurityConstants
>> 11:34:02.712 [main] WARN  org.eclipse.jetty.util.log - FAILED
>> o.e.j.w.WebAppContext{/,file:/home/chrisp/work/java/homesrv/trunk/}:
>> java.lang.NoClassDefFoundError: Could not initialize class
>> sun.security.util.SecurityConstants
>> 11:34:02.712 [main] DEBUG org.eclipse.jetty.util.log - starting
>> SelectChannelConnector@0.0.0.0:9999 STOPPED
>> 11:34:02.713 [main] DEBUG org.eclipse.jetty.util.log - starting
>> org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager@1ca209e
>> 11:34:02.734 [main] DEBUG org.eclipse.jetty.util.log - STARTED
>> org.eclipse.jetty.server.nio.SelectChannelConnector$ConnectorSelectorManager@1ca209e
>> 11:34:02.741 [main] WARN  org.eclipse.jetty.util.log - FAILED
>> SelectChannelConnector@0.0.0.0:9999 FAILED: java.net.BindException:
>> Address already in use
>> 11:34:02.741 [main] WARN  org.eclipse.jetty.util.log - FAILED
>> org.eclipse.jetty.server.Server@1c9b9ca:
>> MultiException[java.lang.NoClassDefFoundError: Could not initialize
>> class sun.security.util.SecurityConstants,
>> java.lang.NoClassDefFoundError: Could not initialize class
>> sun.security.util.SecurityConstants]
>> 11:34:02.742 [main] DEBUG org.eclipse.jetty.util.log - EXCEPTION
>> org.eclipse.jetty.util.MultiException: Multiple exceptions
>>         at org.eclipse.jetty.server.Server.doStart(Server.java:251)
>> ~[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
>>         at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
>> ~[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
>>         at com.autofrog.homesrv.HomeServe.run(HomeServe.java:58) [classes/:na]
>>         at com.autofrog.homesrv.HomeServe.main(HomeServe.java:65) [classes/:na]
>> 11:34:02.742 [main] ERROR com.autofrog.homesrv.HomeServe - Server failed
>> org.eclipse.jetty.util.MultiException: Multiple exceptions
>>         at org.eclipse.jetty.server.Server.doStart(Server.java:251)
>> ~[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
>>         at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
>> ~[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
>>         at com.autofrog.homesrv.HomeServe.run(HomeServe.java:58) ~[classes/:na]
>>         at com.autofrog.homesrv.HomeServe.main(HomeServe.java:65) ~[classes/:na]
>>
>> --Chrs
>>
Loading...