Thank you, Joakim, now my servlet runs, but -

On Fri, Sep 3, 2021 at 6:32 PM Joakim Erdfelt <[email protected]> wrote:

> You are using a JettyWebSocketCreator.
>
> Get rid of  factory.register(WordsListener.class);
>

Jetty 10 prints:

SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.

And then I don't see any logs printed by my servlet with

    Logger LOG                         = Log.getLogger(LOG_TAG);

    LOG.info("....");

And thus I cannot find out why there is no data returned from PostgreSQL...

Maybe this line does not really work?

        factory.setCreator(new WordsCreator(this,
mBundle.getString(STR_DATABASE_URL)));

My servlet is multilanguage and thus I was passing differen DB credentials
with the line above.

What should I please use instead instead of Log.getLogger()? There
is @deprecated, but no replacement suggestion.

Best regards
Alex



> On Fri, Sep 3, 2021 at 11:09 AM Alexander Farber <
> [email protected]> wrote:
>
>> Hi, thank you for the helpful hints, now my WAR compiles.
>>
>> However when I launch it by:
>>
>> 1) First running once on Win 10 / Java 11:
>>
>> java -jar jetty-home-10.0.6\start.jar jetty.home=jetty-home-10.0.6
>> jetty.base=jetty.base
>> --add-module=http,servlet,webapp,deploy,resources,websocket
>>
>> 2) Then running
>>
>> @SET JETTY_HOME=%~dp0\jetty-home-10.0.6
>> @SET JETTY_BASE=%~dp0\jetty.base
>> java -Djdbc.drivers=org.postgresql.Driver -jar %JETTY_HOME%\start.jar
>> jetty.home=%JETTY_HOME% jetty.base=%JETTY_BASE%
>>
>> Then Jetty 10 starts fine initially:
>>
>> 2021-09-03 17:59:51.475:INFO :oejsh.ContextHandler:main: Started
>> o.e.j.w.WebAppContext@42a9e5d1
>> {/en,file:///C:/Users/U299FAV/src/slova/webapp/target/words-4.0/,AVAILABLE}{C:\Users\U299FAV\src\slova\jetty.base/../webapp/target/words-4.0.war}
>> 2021-09-03 17:59:51.485:INFO :oejsh.ContextHandler:main: Started
>> o.e.j.s.h.ContextHandler@2c1b9e4b{/,null,AVAILABLE}
>> 2021-09-03 17:59:51.507:INFO :oejs.AbstractConnector:main: Started
>> ServerConnector@7e027a05{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
>> 2021-09-03 17:59:51.518:INFO :oejs.Server:main: Started 
>> Server@624ea235{STARTING}[10.0.6,sto=5000]
>> @4326ms
>>
>> But when I try accessing the following path (I put the XML file under
>> jetty.base\webapps):
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
>>     "http://www.eclipse.org/jetty/configure_9_0.dtd";>
>> <Configure class="org.eclipse.jetty.webapp.WebAppContext">
>>     <Set name="contextPath">/ru</Set>
>>     <Set name="war"><SystemProperty
>> name="jetty.base"/>/../webapp/target/words-4.0.war</Set>
>> </Configure>
>>
>> Then Jetty 10 reports the error:
>>
>> 2021-09-03 18:00:00.583:WARN :oejshC.ru:qtp1072410641-16: unavailable
>> java.lang.RuntimeException: java.lang.NoSuchMethodException:
>> de.afarber.WordsListener.<init>()
>>         at
>> org.eclipse.jetty.websocket.server.JettyWebSocketServlet$CustomizedWebSocketServletFactory.register(JettyWebSocketServlet.java:218)
>>         at de.afarber.WordsServlet.configure(WordsServlet.java:646)
>>         at
>> org.eclipse.jetty.websocket.server.JettyWebSocketServlet.init(JettyWebSocketServlet.java:168)
>>         at de.afarber.WordsServlet.init(WordsServlet.java:652)
>>         at javax.servlet.GenericServlet.init(GenericServlet.java:180)
>>         at
>> org.eclipse.jetty.servlet.ServletHolder$Wrapper.init(ServletHolder.java:1305)
>>         at
>> org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:633)
>>         at
>> org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:486)
>>         at
>> org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:731)
>>         at
>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)
>>         at
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
>>         at
>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:580)
>>         at
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
>>         at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
>>         at
>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571)
>>         at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
>>         at
>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1372)
>>         at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
>>         at
>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:463)
>>         at
>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1544)
>>         at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
>>         at
>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1294)
>>         at
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
>>         at
>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:192)
>>         at
>> org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
>>         at
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
>>         at org.eclipse.jetty.server.Server.handle(Server.java:562)
>>         at
>> org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:406)
>>         at
>> org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:663)
>>         at
>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:398)
>>         at
>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
>>         at
>> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319)
>>         at
>> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
>>         at
>> org.eclipse.jetty.io.SocketChannelEndPoint$1.run(SocketChannelEndPoint.java:101)
>>         at
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894)
>>         at
>> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038)
>>         at java.base/java.lang.Thread.run(Thread.java:834)
>>
>> My WordsListener.java looks like:
>>
>> import org.eclipse.jetty.util.ajax.JSON;
>> import org.eclipse.jetty.websocket.api.Session;
>> import org.eclipse.jetty.websocket.api.WebSocketListener;
>> import org.eclipse.jetty.websocket.api.WriteCallback;
>>
>> public class WordsListener implements WebSocketListener {
>>     public WordsListener(WordsInterface servlet, String databaseUrl) {
>>         mServlet = servlet;
>>         mDatabaseUrl = databaseUrl;
>>     }
>>
>>     @Override
>>     public void onWebSocketConnect(Session session) {
>>         mSession = session;
>>         InetSocketAddress address = (InetSocketAddress)
>> session.getRemoteAddress();
>>         // use getHostString(), because it does not perform DNS resolving
>>         mAddress = address.getHostString() + ":" + address.getPort();
>>         LOG.info("onWebSocketConnect: address={} session={}", mAddress,
>> mSession);
>>     }
>>
>>     @Override
>>     public void onWebSocketClose(int statusCode, String reason) {
>>         LOG.info("onWebSocketClose: mUid={} address={} statusCode={}
>> reason={}", mUid, mAddress, statusCode, reason);
>>         remove(false);
>>     }
>> }
>>
>> And in my servlet I have:
>>
>> import org.eclipse.jetty.websocket.api.WriteCallback;
>> import org.eclipse.jetty.websocket.server.JettyWebSocketServlet;
>> import org.eclipse.jetty.websocket.server.JettyWebSocketServletFactory;
>>
>> public class WordsServlet extends JettyWebSocketServlet {
>>     @Override
>>     public void configure(JettyWebSocketServletFactory factory) {
>>         mLanguage = System.getenv("COUNTRY");
>>         mBundle = ResourceBundle.getBundle("strings",
>> LOCALES.get(mLanguage));
>>         factory.setIdleTimeout(Duration.ofSeconds(IDLE_TIMEOUT_SECONDS));
>>         factory.setMaxBinaryMessageSize(0);
>>         factory.setMaxTextMessageSize(64 * 1024);
>>         factory.register(WordsListener.class);
>>         factory.setCreator(new WordsCreator(this,
>> mBundle.getString(STR_DATABASE_URL)));
>>     }
>>
>>     @Override
>>     public void init() throws ServletException {
>>         super.init();
>>
>>         try {
>>             Class.forName("org.postgresql.Driver");
>>         } catch (ClassNotFoundException ex) {
>>             throw new ServletException(ex);
>>         }
>>     }
>>
>> And my WordsCreator.java
>>
>> import org.eclipse.jetty.websocket.server.JettyServerUpgradeRequest;
>> import org.eclipse.jetty.websocket.server.JettyServerUpgradeResponse;
>> import org.eclipse.jetty.websocket.server.JettyWebSocketCreator;
>>
>> public class WordsCreator implements JettyWebSocketCreator {
>>     private final WordsInterface mServlet;
>>     private final String mDatabaseUrl;
>>
>>     public WordsCreator(WordsInterface servlet, String databaseUrl) {
>>         mServlet = servlet;
>>         mDatabaseUrl = databaseUrl;
>>     }
>>
>>     @Override
>>     public Object createWebSocket(JettyServerUpgradeRequest req,
>> JettyServerUpgradeResponse resp) {
>>         return new WordsListener(mServlet, mDatabaseUrl);
>>     }
>> }
>>
>> Please help me :-)
>>
>> Regards
>> Alex
>>
>>
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> To unsubscribe from this list, visit
>> https://www.eclipse.org/mailman/listinfo/jetty-users
>>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> To unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/jetty-users
>
_______________________________________________
jetty-users mailing list
[email protected]
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/jetty-users

Reply via email to