Leading REST API framework for Java

Overview

Restlet Framework

The leading REST API framework for Java

Thanks to Restlet Framework's powerful routing and filtering capabilities, unified client and server Java API, developers can build secure and scalable RESTful web APIs.

It is available in editions for all major platforms (Java SE/EE, Google App Engine, OSGi, GWT, Android) and offers numerous extensions to fit the needs of all developers.

It is available under the terms of either the Apache Software License 2.0 or the Eclipse Public License 1.0.

http://restlet.talend.com

Learn more

To learn more about Restlet Framework, please have a look at the following resources:

Copyright 2020 Talend

Build Status

Comments
  • Enhance Swagger extension to support Restlet API metamodel

    Enhance Swagger extension to support Restlet API metamodel

    Currently, the extension only supports JAX-RS API annotations, it would be great to also support the Restlet API resources.

    Implementation could reuse the WADL introspection logic already written.

    Related to issue #595

    workload: 3d

    Extension: WADL State: testing Extension: Swagger Type: enhancement Priority: high 
    opened by jlouvel 45
  • OAuth 2.0 draft30 update

    OAuth 2.0 draft30 update

    These codes support OAuth 2.0 latest specification draft30 for Restlet framework. The implementation considered that meets minimum requirement to draft30. I modified 'heavily' latest version 2.2-SNAPSHOT. I've also support AuthLogin pages which is actually not supported in latest version(2.2-SNAPSHOT). This includes bug fix for issue #614.

    opened by FantomJAC 32
  • Jetty 9 connector

    Jetty 9 connector

    Jetty 9 requires JVM 7, so it might not be officially supported in Restlet for a while (Restlet 2.2 is based on JVM 6).

    Until then, I will maintain a Jetty 9 connector for Restlet 2.2.

    Please help test it, open issues, and of course submit patches!

    In the future, this extension might be merged into Restlet.

    Extension: Jetty State: new Version: 2.3 Priority: high 
    opened by tliron 26
  • /org/restlet/security/Role.java seems to have lost equals, hashCode (GAE Edition)

    /org/restlet/security/Role.java seems to have lost equals, hashCode (GAE Edition)

    Having just upgraded to the November snapshot of 2.2, I was doing some additional testing (this time through a UI which forces a login through oAuth) and the validation kept failing at: AuthenticatedUserImpl: line 103 return grantedRoles.containsKey(role);

    From the debugger: grantedRoles = {CommitKeeper_Access=} grantedRoles.entrySet = [CommitKeeper_Access=] grantedRoles.keySet() = [CommitKeeper_Access] role = CommitKeeper_Access

    In the debugger, I tried evaluating grantedRoles.containsKey(new Role("x")) with different values of x (CommitKeeper_Access, [CommitKeeper_Access], etc.) but it always returned false.

    That was when I noticed that the Role class no longer had equals/hashCode methods. I tried to look back in the source code and round a reference to the source as of m15 (http://massapi.com/source/restlet-jse-2.1m5/src/org.restlet/org/restlet/security/Role.java.html) where those methods were present. (I couldn't quite figure out how to browse more recent changes).

    Hope I have analyzed the situation correctly and that the fix is easy - please let me know if I can send more information or help test anything.

    Thanks! RB

    Module: Restlet API 
    opened by rhbgames 24
  • Restlet dependencies breaking Apache Solr build

    Restlet dependencies breaking Apache Solr build

    Virtually all releases of Apache Solr can no longer be built due to the inability to resolve the reslet dependencies. On top of this all projects that have Apache Solr as a dependency cannot be built due to the inability to resolve the dependencies.

    The root cause of this appears to be the redirect from http to https that occurs when accessing the dependencies on maven.restlet.org. There is also a redirect occurring to maven.restlet.talend.com but this does not appear to be the root cause. But avoiding this redirect would simplify the access to the reslet dependencies as well.

    State: implementation 
    opened by joel-bernstein 20
  • CPU problem with Restlet 2.0.15

    CPU problem with Restlet 2.0.15

    Hi we are noticing a lot of activity in some threads related to Restlet. The problem starts when the servers are on production for a while. Then we take out all requests but still get a lot of CPU usage sporadically.

    This is the top with threads option:

      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    36774 apalabra  20   0 44.5g  11g  51m R 99.9 19.1 187:27.85 java
    36780 apalabra  20   0 44.5g  11g  51m R 99.9 19.1 186:33.75 java
    50351 apalabra  20   0 44.5g  11g  51m R 99.9 19.1  89:22.97 java
     2853 apalabra  20   0 44.5g  11g  51m R 99.9 19.1  82:24.84 java
    

    When I do a jstack to the process and look for that specific threads I find these two stack traces:

    Thread 50351: (state = IN_JAVA)
     - org.restlet.engine.io.ReaderInputStream.read(byte[], int, int) @bci=213, line=166 (Compiled frame; information may be imprecise)
     - java.io.InputStream.skip(long) @bci=44, line=222 (Compiled frame)
     - java.io.FilterInputStream.skip(long) @bci=5, line=151 (Interpreted frame)
     - org.restlet.engine.application.RangeInputStream.read(byte[], int, int) @bci=22, line=159 (Interpreted frame)
     - java.io.FilterInputStream.read(byte[]) @bci=5, line=107 (Compiled frame)
     - org.restlet.engine.io.BioUtils.copy(java.io.InputStream, java.io.OutputStream) @bci=8, line=75 (Compiled frame)
     - org.restlet.engine.application.RangeRepresentation.write(java.io.OutputStream) @bci=5, line=143 (Interpreted frame)
     - org.restlet.engine.http.ServerCall.writeResponseBody(org.restlet.representation.Representation, java.nio.channels.WritableByteChannel, java.io.OuputStream) @bci=18, line=553 (Compiled frame)
     - org.restlet.engine.http.ServerCall.sendResponse(org.restlet.Response) @bci=49, line=491 (Compiled frame [deoptimized])
     - org.restlet.ext.servlet.internal.ServletCall.sendResponse(org.restlet.Response) @bci=218, line=462 (Compiled frame [deoptimized])
     - org.restlet.engine.http.adapter.ServerAdapter.commit(org.restlet.engine.http.HttpResponse) @bci=442, line=200 (Compiled frame)
     - org.restlet.engine.http.HttpServerHelper.handle(org.restlet.engine.http.ServerCall) @bci=30, line=154 (Compiled frame)
     - org.restlet.ext.servlet.ServerServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=24, line=1031 (ompiled frame)
     - javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=366, line=790 (Compiled frame)
     - org.eclipse.jetty.servlet.ServletHolder.handle(org.eclipse.jetty.server.Request, javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bc=89, line=808 (Compiled frame)
     - org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=211, line=1669 (Cmpiled frame)
     - org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletRespnse, javax.servlet.FilterChain) @bci=53, line=88 (Compiled frame)
     - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChan) @bci=383, line=76 (Compiled frame)
     - org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=103, line=1652 (Cmpiled frame)
     - org.eclipse.jetty.servlet.ServletHandler.doHandle(java.lang.String, org.eclipse.jetty.server.Request, javax.servlet.http.HttpServletRequest, java.servlet.http.HttpServletResponse) @bci=203, line=585 (Compiled frame)
     - org.eclipse.jetty.server.handler.ScopedHandler.handle(java.lang.String, org.eclipse.jetty.server.Request, javax.servlet.http.HttpServletRequest, avax.servlet.http.HttpServletResponse) @bci=32, line=143 (Compiled frame)
     - org.eclipse.jetty.security.SecurityHandler.handle(java.lang.String, org.eclipse.jetty.server.Request, javax.servlet.http.HttpServletRequest, java.servlet.http.HttpServletResponse) @bci=553, line=577 (Compiled frame)
    
    Thread 2853: (state = IN_JAVA)
     - sun.nio.cs.Surrogate$Parser.parse(char, char[], int, int) @bci=104, line=242 (Compiled frame; information may be imprecise)
     - sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(java.nio.CharBuffer, java.nio.ByteBuffer) @bci=264, line=542 (Compiled frame)
     - sun.nio.cs.UTF_8$Encoder.encodeLoop(java.nio.CharBuffer, java.nio.ByteBuffer) @bci=17, line=619 (Compiled frame)
     - java.nio.charset.CharsetEncoder.encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean) @bci=57, line=561 (Compiled frame)
     - org.restlet.engine.io.ReaderInputStream.read(byte[], int, int) @bci=116, line=146 (Compiled frame)
     - java.io.InputStream.skip(long) @bci=44, line=222 (Compiled frame)
     - java.io.FilterInputStream.skip(long) @bci=5, line=151 (Interpreted frame)
     - org.restlet.engine.application.RangeInputStream.read(byte[], int, int) @bci=22, line=159 (Interpreted frame)
     - java.io.FilterInputStream.read(byte[]) @bci=5, line=107 (Compiled frame)
     - org.restlet.engine.io.BioUtils.copy(java.io.InputStream, java.io.OutputStream) @bci=8, line=75 (Compiled frame)
     - org.restlet.engine.application.RangeRepresentation.write(java.io.OutputStream) @bci=5, line=143 (Interpreted frame)
     - org.restlet.engine.http.ServerCall.writeResponseBody(org.restlet.representation.Representation, java.nio.channels.WritableByteChannel, java.io.Ou
     - org.restlet.engine.http.ServerCall.sendResponse(org.restlet.Response) @bci=49, line=491 (Compiled frame [deoptimized])
     - org.restlet.ext.servlet.internal.ServletCall.sendResponse(org.restlet.Response) @bci=218, line=462 (Compiled frame [deoptimized])
     - org.restlet.engine.http.adapter.ServerAdapter.commit(org.restlet.engine.http.HttpResponse) @bci=442, line=200 (Compiled frame)
     - org.restlet.engine.http.HttpServerHelper.handle(org.restlet.engine.http.ServerCall) @bci=30, line=154 (Compiled frame)
     - org.restlet.ext.servlet.ServerServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=24, line=1031 (
     - javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=366, line=790 (Compiled frame)
    

    Do you have any clues what could this be? I know we are using an outdated version of Restlet, but if we find that this issue is related to the project, we could update and fix it.

    System specs
    Jetty version: 9.2.8
    Java version: 1.7.0_67, vendor: Oracle Corporation
    Java home: /usr/java/jdk1.7.0_67/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "3.10.35-43.137.amzn1.x86_64", arch: "amd64", family: "unix"
    

    Thanks!

    Module: Restlet Engine Edition: Java SE State: analysis Priority: high 
    opened by gonzajg 20
  • 2.1.2 not working on Windows XP

    2.1.2 not working on Windows XP

    Restlet 2.1.2 (e.g. HelloServer and HelloClient) is not running Windows XP. My real app is working with no problems on 7 and Vista, but not on XP.

    The server starts, the ports are listening. The clients seems to connect but nothing happens, it simply hangs.

    If I close the server, the clients shows errors.

    2.1.1 is running like a charm.

    Edition: Java SE Distribution: Windows Version: 2.1 Type: bug State: analysis 
    opened by petemadsen 19
  • testQueryJobPostingsDeepExpandWithComplexProperty error

    testQueryJobPostingsDeepExpandWithComplexProperty error

    Hi,

    I created two extensions for Restlet and I'm trying to merge them with Restlet project: https://github.com/ggodlewski/org.restlet.ext.swagger https://github.com/ggodlewski/org.restlet.ext.thymeleaf

    However, I'm unable to compile sources.

    I get following error:

    verify-ant: [echo] For easier integration with JUnit, we recommand usage of Ant 1.7 or higher. [echo] Otherwise, make sure that you have JUnit's JAR into you Ant's lib directory. [echo] Current version: Apache Ant(TM) version 1.8.2 compiled on December 3 2011

    verify-tests: [mkdir] Created dir: /home/gg/workspaces/restlet-framework-java/build/editions/jse/temp/test [echo] See the JUnit log file for more details: /home/gg/workspaces/restlet-framework-java/build/editions/jse/temp/test/TEST-org.restlet.test.RestletTestSuite.txt. [junit] Running org.restlet.test.RestletTestSuite [junit] Running org.restlet.test.RestletTestSuite [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec [junit] Test org.restlet.test.RestletTestSuite FAILED (timeout)

    BUILD FAILED /home/gg/workspaces/restlet-framework-java/build/build.xml:281: The following error occurred while executing this line: /home/gg/workspaces/restlet-framework-java/build/build.xml:284: The following error occurred while executing this line: /home/gg/workspaces/restlet-framework-java/build/build.xml:196: The following error occurred while executing this line: /home/gg/workspaces/restlet-framework-java/build/build.xml:201: The following error occurred while executing this line: /home/gg/workspaces/restlet-framework-java/build/editions/jse/build.xml:2797: At least one failure during junit tests.

    cat /home/gg/workspaces/restlet-framework-java/build/editions/jse/temp/test/TEST-org.restlet.test.RestletTestSuite.txt

    Testsuite: org.restlet.test.RestletTestSuite Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec

    Testcase: testQueryJobPostingsDeepExpandWithComplexProperty took 0.003 sec Caused an ERROR Timeout occurred. Please note the time in the report does not reflect the time until the timeout. junit.framework.AssertionFailedError: Timeout occurred. Please note the time in the report does not reflect the time until the timeout. at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197) at net.sf.antcontrib.logic.ForTask.doSequentialIteration(ForTask.java:259) at net.sf.antcontrib.logic.ForTask.doToken(ForTask.java:268) at net.sf.antcontrib.logic.ForTask.doTheTasks(ForTask.java:299) at net.sf.antcontrib.logic.ForTask.execute(ForTask.java:244) at net.sf.antcontrib.logic.ForTask.doSequentialIteration(ForTask.java:259) at net.sf.antcontrib.logic.ForTask.doToken(ForTask.java:268) at net.sf.antcontrib.logic.ForTask.doTheTasks(ForTask.java:299) at net.sf.antcontrib.logic.ForTask.execute(ForTask.java:244)

    help! ;)

    Extension: JAX-RS Type: bug State: new Priority: medium 
    opened by ggodlewski 18
  • java.lang.ClassCastException: org.restlet.data.Parameter cannot be cast to org.restlet.data.Header

    java.lang.ClassCastException: org.restlet.data.Parameter cannot be cast to org.restlet.data.Header

    I'm using restlet 2.3.1 with CorsService. Http calls do return content as expected, but the following messages appear in the log:

    Apr 27, 2015 2:30:43 PM org.restlet.engine.adapter.ServerAdapter addResponseHeaders
    WARNING: Exception intercepted while adding the response headers
    java.lang.ClassCastException: org.restlet.data.Parameter cannot be cast to org.restlet.data.Header
            at org.restlet.engine.header.HeaderUtils.addExtensionHeaders(HeaderUtils.java:220)
            at org.restlet.engine.header.HeaderUtils.addResponseHeaders(HeaderUtils.java:641)
            at org.restlet.engine.adapter.ServerAdapter.addResponseHeaders(ServerAdapter.java:83)
            at org.restlet.engine.adapter.ServerAdapter.commit(ServerAdapter.java:184)
            at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:144)
            at org.restlet.ext.simple.internal.SimpleContainer.handle(SimpleContainer.java:74)
            at org.simpleframework.http.core.Dispatcher.dispatch(Dispatcher.java:121)
            at org.simpleframework.http.core.Dispatcher.run(Dispatcher.java:103)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
            at java.lang.Thread.run(Thread.java:745)
    

    Can you advice?

    Module: Restlet Engine Extension: Simple Type: bug State: analysis Version: 2.3 Priority: critical 
    opened by mastershifu 16
  • ChallengeResponse null on server side

    ChallengeResponse null on server side

    Hi,

    We're trying to use the ChallengeResponse to add an OAuth2 access token to the HTTP request header. However, on the server-side the challenge response is always null. Now, we did find an old post (http://osdir.com/ml/java-restlet/2009-07/msg00132.html) where this issue was also reported and the person who posted it also proposed a work-around as follows:

    Series<Parameter> headers = new Form();
    headers.add("Authorization", "Bearer " + accessToken);
    clientProxy.getRequest().addAttributes().put("org.restlet.http.headers", headers);
    

    After making the REST call to the server, I try to extract the access token in the server resource as follows:

    Series<Parameter> headers = getRequest().getAttributes().get("org.restlet.http.headers");
    

    However, there's no entry "Authorization: Bearer" anymore. I'm wondering where did it go? Even so, this is a work around proposed some time ago (july 2009) but apparently the problem still persists in the latest version of Restlet (we're using 3.0-M1). We would much prefer using the "official" challenge response for this purpose.

    Any ideas how we could get this working? Perhaps we should add more configuration options to the request? Would be great to get some feedback on this.

    Kind regards,

    Ralph

    Edition: GAE Edition: GWT Type: bug Version: 2.3 Priority: critical State: done 
    opened by rbrecheisen 16
  • NullPointerException when using WADL extension

    NullPointerException when using WADL extension

    While I was running source code from "Restlet in Action" book, I did get NullPointerException after visiting http://localhost:8111/?method=options in web browser.

    xalan 2.6.0

    java.lang.NullPointerException
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:606)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170)
        at org.restlet.ext.xml.TransformRepresentation.transform(TransformRepresentation.java:572)
        at org.restlet.ext.xml.TransformRepresentation.write(TransformRepresentation.java:589)
        at org.restlet.ext.xml.TransformRepresentation.write(TransformRepresentation.java:599)
        at org.restlet.representation.CharacterRepresentation.write(CharacterRepresentation.java:76)
        at org.restlet.engine.adapter.ServerCall.writeResponseBody(ServerCall.java:509)
        at org.restlet.engine.adapter.ServerCall.sendResponse(ServerCall.java:453)
        at org.restlet.ext.servlet.internal.ServletCall.sendResponse(ServletCall.java:426)
        at org.restlet.engine.adapter.ServerAdapter.commit(ServerAdapter.java:196)
        at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:153)
        at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1089)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:426)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:118)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:495)
        at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:179)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:930)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:361)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:864)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:116)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:243)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:112)
        at org.eclipse.jetty.server.Server.handle(Server.java:337)
        at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:552)
        at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:979)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:533)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)
        at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:399)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:437)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:435)
        at java.lang.Thread.run(Thread.java:662)
    

    xalan 2.7.1

    java.lang.NullPointerException
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:642)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1273)
        at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1251)
        at org.restlet.ext.xml.TransformRepresentation.transform(TransformRepresentation.java:572)
        at org.restlet.ext.xml.TransformRepresentation.write(TransformRepresentation.java:589)
        at org.restlet.ext.xml.TransformRepresentation.write(TransformRepresentation.java:599)
        at org.restlet.representation.CharacterRepresentation.write(CharacterRepresentation.java:76)
        at org.restlet.engine.adapter.ServerCall.writeResponseBody(ServerCall.java:509)
        at org.restlet.engine.adapter.ServerCall.sendResponse(ServerCall.java:453)
        at org.restlet.ext.servlet.internal.ServletCall.sendResponse(ServletCall.java:426)
        at org.restlet.engine.adapter.ServerAdapter.commit(ServerAdapter.java:196)
        at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:153)
        at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1089)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:426)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:118)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:495)
        at org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:179)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:930)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:361)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:864)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:116)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:243)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:112)
        at org.eclipse.jetty.server.Server.handle(Server.java:337)
        at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:552)
        at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:979)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:533)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)
        at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:399)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:437)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:435)
        at java.lang.Thread.run(Thread.java:662)
    
    Extension: WADL Version: 2.1 Type: bug State: testing Priority: high 
    opened by delor 14
  • The trustmanager algorithm SunX509 is outdated, which causes an exception if certificate chain is out of order, but valid

    The trustmanager algorithm SunX509 is outdated, which causes an exception if certificate chain is out of order, but valid

    Caused by: sun.security.validator.ValidatorException: Certificate chaining error at sun.security.validator.SimpleValidator.engineValidate(SimpleValidator.java:207) at sun.security.validator.Validator.validate(Validator.java:260) at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596)

    The default trustmanager algorithm used by java and the default algorithm used by the restlet framework are different which results in certificate chains seen as valid in java being "unknown" when called by the restlet framework.

    "It should also be noted that this error only comes from the SunX509 TrustManagerFactory, but by default Java will use the PKIX TrustManagerFactory which doesn't have this error. To cause this error, the SunX509 factory must be configured either programmatically or overriding ssl.TrustManagerFactory.algorithm in java.security. Usage of SunX509 TrustManagerFactory is not recommended since SunX509 is considered obsolete and isn't updated since PKIX TrustManagerFactory was introduced." Source: https://access.redhat.com/solutions/1265543

    This problem could be fixed by replacing the following field in the default DefaultSslContextFactory: private volatile String trustManagerAlgorithm = System.getProperty( "ssl.TrustManagerFactory.algorithm", "SunX509");

    with private volatile String trustManagerAlgorithm = System.getProperty( "ssl.TrustManagerFactory.algorithm", TrustManagerFactory.getDefaultAlgorithm());

    opened by StefanSperliDerNeicheWaldvogel 1
  • Restlet-2.4 integration with up-to-date Jetty versions

    Restlet-2.4 integration with up-to-date Jetty versions

    Since Jetty 9 is no longer community supported as of June 1st, 2022 and will be end-of-life soon: Will there be version of Restlet-2.4 that integrates with one of the newer Jetty versions?

    opened by effad 1
  • About the RCE 0day Vulnerability

    About the RCE 0day Vulnerability

    Component of restlet-framework-java [spring-beans 3.2.8.RELEASE]. The RCE 0day vulnerability may exist. Please check whether exists. If yes, how to rectify the fault. Thank you.

    opened by chenhliang 1
  • How to configure org.restlet.Server to add ForwardedRequestCustomizer to the Jetty server?

    How to configure org.restlet.Server to add ForwardedRequestCustomizer to the Jetty server?

    I'm working on a configuration of restlet where the instance is running behind a load balancer. The load balancer is connecting to the restlet server via HTTP but the client is connecting to the LB via HTTPS. The LB is sending down the normal X-Forwarded-XXX (port, proto, host, servername, for) as new HTTP headers. Currently when the restlet server is using request.sendRedirect the location header is being written by the contain as http://localServerName:localPort/

    opened by KevinDyer-3DS 0
  • Security certificate for https://maven.restlet.com/ expired, SOLR build fails

    Security certificate for https://maven.restlet.com/ expired, SOLR build fails

    Hello,

    The security certificate for https://maven.restlet.com/ expired, SOLR build fails due to this. Can it be renewed, please?

    Thank you!

    [artifact:mvn] [main] ERROR org.apache.maven.cli.MavenCli - Failed to execute goal on project ngssearch: Could not resolve dependencies for project de.hybris.platform:ngssearch:jar:5.0.0.0-SNAPSHOT: Failed to collect dependencies at org.apache.solr:solr-core:jar:8.4.0 -> org.restlet.jee:org.restlet:jar:2.3.0: Failed to read artifact descriptor for org.restlet.jee:org.restlet:jar:2.3.0: Could not transfer artifact org.restlet.jee:org.restlet:pom:2.3.0 from/to maven-restlet (https://maven.restlet.com): PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed: NotAfter: Sat Dec 11 22:28:29 GMT 2021 -> [Help 1]

    opened by olegburca 4
Owner
Restlet Framework
The leading REST API Framework for Java developers
Restlet Framework
Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API

Swagger Core NOTE: If you're looking for Swagger Core 1.5.X and OpenAPI 2.0, please refer to 1.5 branch. NOTE: Since version 2.1.7 Swagger Core suppor

Swagger 7.1k Jan 5, 2023
Simple JSP Servlets REST api.

Simple JSP Servlets REST api.

MisterFunny01 3 May 9, 2021
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

Microserver A convenient modular engine for Microservices. Microserver plugins offer seamless integration with Spring (core), Jersey, Guava, Tomcat, G

AOL 936 Dec 19, 2022
A Java API wrapper for the pastemyst api

Pastemyst.java What is pastemyst.java? pastemyst.java is a pastemyst API Wrapper, written in Java. The library is in early development, and all contri

YeffyCodeGit 8 Sep 28, 2022
Spring HATEOAS - Library to support implementing representations for hyper-text driven REST web services.

Spring HATEOAS This project provides some APIs to ease creating REST representations that follow the HATEOAS principle when working with Spring and es

Spring 996 Dec 28, 2022
Spring HATEOAS - Library to support implementing representations for hyper-text driven REST web services.

Spring HATEOAS This project provides some APIs to ease creating REST representations that follow the HATEOAS principle when working with Spring and es

Spring 920 Mar 8, 2021
RestAhead - compile time generated REST client

RestAhead - compile time generated REST client This project draws inspiration from projects such as Retrofit and Feign, but with a twist: your service

Žan Skamljič 13 Dec 24, 2022
Dio-api-1 - Repositório com os artefatos da mentoria de API

dio-api-1 Repositório com os artefatos da mentoria de API Reference Documentation For further reference, please consider the following sections: Offic

Ricardo Lucas Chagas 5 Feb 25, 2022
API Gestor é uma API que permite a comunicação com um Banco de Dados educacionais sobre a educação brasileira.

API Gestor O projeto API Gestor é uma API que permite a comunicação de outras aplicações com os dados educacionais armazenados em um banco de dados, c

null 2 Apr 13, 2022
Rapidoid - Extremely Fast, Simple and Powerful Java Web Framework and HTTP Server!

Rapidoid - Simple. Powerful. Secure. Fast! Rapidoid is an extremely fast HTTP server and modern Java web framework / application container, with a str

null 1.6k Dec 30, 2022
A simple API wrapper for discords.com (alias botsfordiscord.com) written in Java.

Discords.com / BotsForDiscord.com Java Library A simple API wrapper for discords.com (alias botsfordiscord.com) written in Java 8. Installation This w

Dorian 3 Aug 6, 2021
API de Clientes - Java+Quarkus

com.clientes.api Project This project uses Quarkus, the Supersonic Subatomic Java Framework. If you want to learn more about Quarkus, please visit its

null 5 Oct 12, 2021
绕过安卓hidden api 限制

背景 非 SDK API 名单(谷歌官方) 随着每个 Android 版本的发布,会有更多非 SDK 接口受到限制。 我们知道这些限制会影响您的发布工作流,同时我们希望确保您拥有相关工具来检测非 SDK 接口的使用情况、有机会向我们提供反馈,并且有时间根据相应新政策做出规划和调整。 为最大程度地降低

null 67 Nov 29, 2022
Disable the 1.8x Click delay with this sleek API.

Tecknix Client Click Delay API A simple solution to remove Minecraft 1.8's click delay timer. Installation: Tecknix Click Delay API requires a Bukkit

Tecknix Client 2 Nov 16, 2021
API RESTful Challenge

developer-challenge API RESTful Challenge API feita com java e hospedada no Heroku #Adicionar país Metodo: [POST] https://challenge-rest-api.herokuapp

Albertino Augusto Marrengule 2 Sep 7, 2022
An easy to use api to interact with many versions of minecraft in a version independent environment.

Glass - API An easy to use api to interact with many versions of minecraft in a version independent environment. Setup Instructions should be relative

null 2 Jan 25, 2022
API - Aprendizagem por Projetos Integrados

API - Aprendizagem por Projetos Integrados Participantes Nome Função GitHub Everton Ricardo Wanderley da Rocha Product Owner Gustavo Konflanz Mezzomo

null 5 Apr 15, 2022
Feign makes writing java http clients easier

Feign makes writing java http clients easier Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. Feign's first goal

null 8.5k Jan 2, 2023