Reputation: 39
I am trying to upgrade the jetty version from 9x to 12x and getting the below exception when starting my application.
Exception in thread "main" java.lang.NoSuchMethodError: 'void org.eclipse.jetty.server.ServerConnector.setSoLingerTime(int)'
at org.restlet.ext.jetty.JettyServerHelper.createConnector(JettyServerHelper.java:325)
at org.restlet.ext.jetty.JettyServerHelper.createServer(JettyServerHelper.java:376)
at org.restlet.ext.jetty.JettyServerHelper.getWrappedServer(JettyServerHelper.java:685)
at org.restlet.ext.jetty.JettyServerHelper.start(JettyServerHelper.java:702)
at org.restlet.Server.start(Server.java:579)
at org.restlet.Component.startServers(Component.java:642)
at org.restlet.Component.start(Component.java:567)
at com.gkp.StandAloneReportingService.setupHost(StandAloneReportingService.java:402)
at com.gkp.StandAloneReportingService.init(StandAloneReportingService.java:352)
at com.gkp.StandAloneReportingService.<init>(StandAloneReportingService.java:287)
at com.gkp.StandAloneReportingService.main(StandAloneReportingService.java:213)
Environment :
Code: -
private void setupHost() throws Exception {
// start a new Restlet component
component = new Component();
// setting up server connectors
setupServerConnectors(component.getServers());
// setting up JMS listening port
setupJMSListeningPort();
// creating a http authentication layer if configured
setupHttpAuthentication(component);
component.start();
}
Pom.xml :
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>12.0.8</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>12.0.8</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
<version>12.0.8</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
<version>12.0.8</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>12.0.8</version>
</dependency>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>org.restlet.ext.jetty</artifactId>
<version>2.4.1</version>
</dependency>
Dependency Tree:
Thank you for your help!
Upvotes: -1
Views: 395
Reputation: 49545
ServerConnector.setSoLinger(int)
was deprecated back in 2018, with no replacement.
This is because java.net.StandardSocketOptions.SO_LINGER
has no purpose or impact on non-blocking sockets, which Jetty uses exclusively.
The last time java.net.StandardSocketOptions.SO_LINGER
was viable was when all of the of the following was true.
Since Jetty 12 is using a newer version of Java, and only uses NIO, java.net.StandardSocketOptions.SO_LINGER
is not, and cannot, be used.
Just remove that line of code from your codebase, it had no purpose on Jetty 9, and was basically a no-op anyway.
Note: restlet does not support Jetty 12 (yet)
https://github.com/restlet/restlet-framework-java/issues/1396
Upvotes: 1