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
