> 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.
You don't have a provider in your classpath. Add one. You have many to choose from. Jetty's own jetty-slf4j-impl, or logback, or log4j2, or java.util.logging, etc ... Read the documentation at the link in the warning message. Joakim Erdfelt / [email protected] On Fri, Sep 3, 2021 at 2:14 PM Alexander Farber <[email protected]> wrote: > 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 >
_______________________________________________ jetty-users mailing list [email protected] To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
