THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
Page properties | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Goals:
- Simplify how remoteable interface proxies are exposed in the server and used in the clients.
- Allow interface proxies to be defined against 3rd-party REST interfaces.
- Allow interface proxies to pass Java method parameters as GET parameters.
New annotations:
- @Remotable
Annotation applied to interface proxy classes.
- path(String), optional
The absolute or relative path to the REST service.
When relative path is specified, it's relative to the root-url defined on the RestClient.
When no path is specified, it's assumed to be the class name ("org.foo.MyInterface") - expose(String), optional
Defines the methods on the interface that are visible.
Possible values:- "ALL" (default) - All methods defined on the interface are visible.
- "REMOTEABLEREMOTE" - Only methods marked with the @RemoteableMethod the @RemoteMethod annotation are visible.
- @RemoteMethod@RemoteableMethod
Annotation applied to Java methods on interface proxy classes.- path(String), optional
The path to the REST service for this Java method.
The default value is the Java method name itselfsignature (e.g. "myMethod(int,boolean,java.lang.String)"). - httpMethod(String), optional
Defines whether to use GET or POST for the method call.
Possible values:- "POST" (default) - Parameters are serialized using the serializer registered with the RestClient.
- "GET" - Parameters are serialized using the UrlEncodingSerializer registered with the RestClient.
- path(String), optional
- @Query("name")
Annotation applied to Java method arguments to denote that they are QUERY parameters on the request.
- @FormData("name")
Annotation applied to Java method arguments to denote that they are FORM post parameters on the request. - @Body
Annotation applied to Java method arguments to denote that they are the HTTP body of the request. - @Header("name")
Annotation applied to Java method arguments to denote that they are serialized as an HTTP header value.
Example:
// *** Server side *** @Remoteable(url="/myremoteableinterfacemyremoteable") RestClient client = RestClientBuilder().rootUrl("http://hostname").build(); |
The code above causes the following HTTP request:
HTTP GET http://hostname/myremoteableinterface/method1?bar=123&baz=foo&qux=(...) |
Other changes:
- Move @Remoteable annotation to a new package: org.apache.juneau.remoteable.
All new annotations shown above would be grouped in this package.