You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2019/11/24 01:14:51 UTC

[juneau] branch master updated: New @Remote annotation.

This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new cc8b274  New @Remote annotation.
cc8b274 is described below

commit cc8b27472546a5f8a8b14d6f38ca189077bd51c9
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sat Nov 23 20:14:34 2019 -0500

    New @Remote annotation.
---
 .../remote/{RemoteResource.java => Remote.java}    |   2 +-
 .../apache/juneau/http/remote/RemoteMethod.java    |   2 +-
 .../apache/juneau/http/remote/RemoteResource.java  |   2 +
 juneau-doc/docs/ReleaseNotes/7.2.0.html            |   2 +-
 juneau-doc/docs/ReleaseNotes/8.1.2.html            |   6 +-
 .../09.juneau-rest-client/01.RestProxies.html      |  12 +--
 .../{01.RemoteResource.html => 01.Remote.html}     |  26 ++---
 .../01.RestProxies/02.RemoteMethod.html            |   8 +-
 .../01.RestProxies/03.Body.html                    |   4 +-
 .../01.RestProxies/04.FormData.html                |   2 +-
 .../01.RestProxies/05.Query.html                   |   2 +-
 .../01.RestProxies/06.Header.html                  |   2 +-
 .../01.RestProxies/07.Path.html                    |   2 +-
 .../01.RestProxies/08.Request.html                 |   4 +-
 .../01.RestProxies/09.Response.html                |   4 +-
 .../01.RestProxies/10.DualPurposeInterfaces.html   |   6 +-
 juneau-doc/docs/Topics/10.juneau-rest-mock.html    |   2 +-
 .../10.juneau-rest-mock/02.MockRemoteResource.html |  28 +++---
 .../rest/test/client/RequestBeanProxyTest.java     | 112 ++++++++++-----------
 .../rest/test/client/ThirdPartyProxyTest.java      |   4 +-
 .../juneau/rest/client/BodyAnnotationTest.java     |  12 +--
 .../juneau/rest/client/EndToEndInterfaceTest.java  |  38 +++----
 .../juneau/rest/client/FormDataAnnotationTest.java |  40 ++++----
 .../juneau/rest/client/HeaderAnnotationTest.java   |  40 ++++----
 .../juneau/rest/client/PathAnnotationTest.java     |  32 +++---
 .../juneau/rest/client/QueryAnnotationTest.java    |  40 ++++----
 .../rest/client/RemoteMethodAnnotationTest.java    |  16 +--
 .../rest/client/RemoteResourceAnnotationTest.java  |  46 ++++-----
 .../juneau/rest/client/RequestAnnotationTest.java  |  20 ++--
 .../juneau/rest/client/ResponseAnnotationTest.java |   4 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  40 ++++++--
 .../{RemoteResourceMeta.java => RemoteMeta.java}   |  12 ++-
 .../{MockRemoteResource.java => MockRemote.java}   |  68 ++++++-------
 33 files changed, 333 insertions(+), 307 deletions(-)

diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteResource.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
similarity index 96%
copy from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteResource.java
copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
index b7a1475..c2e5217 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteResource.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/Remote.java
@@ -28,7 +28,7 @@ import java.lang.annotation.*;
 @Target({TYPE})
 @Retention(RUNTIME)
 @Inherited
-public @interface RemoteResource {
+public @interface Remote {
 
 	/**
 	 * REST service path.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java
index adc90a9..3626258 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteMethod.java
@@ -40,7 +40,7 @@ public @interface RemoteMethod {
 	 * The possible values are:
 	 * <ul class='spaced-list'>
 	 * 	<li>An absolute URL.
-	 * 	<li>A relative URL interpreted as relative to the root URL defined on the <c>RestClient</c> and/or {@link RemoteResource#path()}.
+	 * 	<li>A relative URL interpreted as relative to the root URL defined on the <c>RestClient</c> and/or {@link Remote#path()}.
 	 * 	<li>No path.
 	 * </ul>
 	 *
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteResource.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteResource.java
index b7a1475..0358d29 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteResource.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/remote/RemoteResource.java
@@ -23,11 +23,13 @@ import java.lang.annotation.*;
  * <ul class='seealso'>
  * 	<li class='link'>{@doc juneau-rest-client.RestProxies}
  * </ul>
+ * @deprecated Use {@link Remote}
  */
 @Documented
 @Target({TYPE})
 @Retention(RUNTIME)
 @Inherited
+@Deprecated
 public @interface RemoteResource {
 
 	/**
diff --git a/juneau-doc/docs/ReleaseNotes/7.2.0.html b/juneau-doc/docs/ReleaseNotes/7.2.0.html
index 7e88bf6..06e1771 100644
--- a/juneau-doc/docs/ReleaseNotes/7.2.0.html
+++ b/juneau-doc/docs/ReleaseNotes/7.2.0.html
@@ -62,7 +62,7 @@
 				- Used for remote proxy interfaces served up through 
 				<dc>RemoteInterfaceServlet</dc> or REST <js>"PROXY"</js> methods.
 				<br>Defaults to <js>"POST"</js> with method signatures as paths.
-			<li class='ja'>{@link oajrc.remote.RemoteResource} 
+			<li class='ja'><dc>RemoteResource</dc> 
 				- Used for 3rd-party REST interfaces.
 				<br>Defaults to <js>"GET"</js> with standardized naming conventions for paths.
 		</ul>
diff --git a/juneau-doc/docs/ReleaseNotes/8.1.2.html b/juneau-doc/docs/ReleaseNotes/8.1.2.html
index 28bc251..8f5e235 100644
--- a/juneau-doc/docs/ReleaseNotes/8.1.2.html
+++ b/juneau-doc/docs/ReleaseNotes/8.1.2.html
@@ -42,9 +42,11 @@
 	<li>
 		{@link oaj.marshall.CharMarshall} and {@link oaj.marshall.StreamMarshall} now have public constructors.
 	<li>
-		{@link oaj.annotation.Beanp @Beanp} replaces {@link oaj.annotation.BeanProperty @BeanProperty} with shorter syntax.
+		{@link oaj.annotation.Beanp @Beanp} replaces {@link oaj.annotation.BeanProperty @BeanProperty}.
 	<li>
-		{@link oaj.annotation.Beanc @Beanc} replaces {@link oaj.annotation.BeanConstructor @BeanConstructor} with shorter syntax.
+		{@link oaj.annotation.Beanc @Beanc} replaces {@link oaj.annotation.BeanConstructor @BeanConstructor}.
+	<li>
+		{@link oaj.http.remote.@Remote @Remote} replaces {@link oaj.http.remote.@RemoteResource}.
 	<li>
 		Shortened names for {@link oaj.annotation.Bean#dictionary @Bean(dictionary)} and {@link oaj.BeanContextBuilder#dictionary(Class...)}.
 </ul>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html
index 2662865..1344d69 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies.html
@@ -26,9 +26,9 @@ REST Proxies
 <ul class='javatree'>
 	<li class='jc'>{@link oajrc.RestClient}
 	<ul>
-		<li class='jm'>{@link oajrc.RestClient#getRemoteResource(Class) getRemoteResource(Class)}
-		<li class='jm'>{@link oajrc.RestClient#getRemoteResource(Class,Object) getRemoteResource(Class,Object)}
-		<li class='jm'>{@link oajrc.RestClient#getRemoteResource(Class,Object,Serializer,Parser) getRemoteResource(Class,Object,Serializer,Parser)}
+		<li class='jm'>{@link oajrc.RestClient#getRemote(Class) getRemote(Class)}
+		<li class='jm'>{@link oajrc.RestClient#getRemote(Class,Object) getRemote(Class,Object)}
+		<li class='jm'>{@link oajrc.RestClient#getRemote(Class,Object,Serializer,Parser) getRemote(Class,Object,Serializer,Parser)}
 	</ul>
 </ul>
 <p>
@@ -38,7 +38,7 @@ REST Proxies
 <ul class='javatree'>
 	<li class='jp'>{@link oaj.http.remote}
 	<ul>
-		<li class='ja'>{@link oaj.http.remote.RemoteResource}
+		<li class='ja'>{@link oaj.http.remote.Remote}
 		<li class='ja'>{@link oaj.http.remote.RemoteMethod}
 	</ul>
 	<li class='jp'>{@link oaj.http.annotation}
@@ -55,7 +55,7 @@ REST Proxies
 
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>(path=<js>"/petstore"</js>)
+	<ja>@Remote</ja>(path=<js>"/petstore"</js>)
 	<jk>public interface</jk> PetStore {
 		
 		<ja>@RemoteMethod</ja>(httpMethod=<jsf>POST</jsf>, path=<js>"/pets"</js>)
@@ -69,7 +69,7 @@ REST Proxies
 <p class='bpcode w800'>	
 	<jc>// Use a RestClient with default Simple JSON support.</jc>
 	<jk>try</jk> (RestClient client = RestClient.<jsm>create</jsm>().simpleJson().build()) {
-		PetStore store = client.getRemoteResource(PetStore.<jk>class</jk>, <js>"http://localhost:10000"</js>);
+		PetStore store = client.getRemote(PetStore.<jk>class</jk>, <js>"http://localhost:10000"</js>);
 		CreatePet pet = <jk>new</jk> CreatePet(<js>"Fluffy"</js>, 9.99);
 		String response = store.createPet(pet, UUID.<jsm>randomUUID</jsm>(), <jk>true</jk>);
 	}
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/01.RemoteResource.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/01.Remote.html
similarity index 71%
rename from juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/01.RemoteResource.html
rename to juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/01.Remote.html
index 8be5ba7..2b64c85 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/01.RemoteResource.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/01.Remote.html
@@ -13,25 +13,25 @@
  ***************************************************************************************************************************/
  -->
 
-@RemoteResource
+{updated} @Remote
 
 <p>
-	The {@link oaj.http.remote.RemoteResource @RemoteResource} annotation is used on your interface class
+	The {@link oaj.http.remote.Remote @Remote} annotation is used on your interface class
 	to identify it as a REST proxy interface.
 </p>
 <ul class='javatree'>
-	<li class='ja'>{@link oaj.http.remote.RemoteResource}
+	<li class='ja'>{@link oaj.http.remote.Remote}
 	<ul>
-		<li class='jf'>{@link oaj.http.remote.RemoteResource#path path}
+		<li class='jf'>{@link oaj.http.remote.Remote#path path}
 	</ul>
 </ul>
 <p>
-	The <ja>@RemoteResource</ja> annotation is optional, but often included for code readability.
+	The <ja>@Remote</ja> annotation is optional, but often included for code readability.
 </p>
 
-<h5 class='topic'>@RemoteResource(path)</h5>
+<h5 class='topic'>@Remote(path)</h5>
 <p>
-	The {@link oaj.http.remote.RemoteResource#path @RemoteResource(path)} annotation is used to define the
+	The {@link oaj.http.remote.Remote#path @Remote(path)} annotation is used to define the
 	HTTP path of the REST service.
 </p>
 <p>
@@ -39,34 +39,34 @@
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>(path=<js>"http://localhost:10000/petstore"</js>)
+	<ja>@Remote</ja>(path=<js>"http://localhost:10000/petstore"</js>)
 	<jk>public interface</jk> PetStore {...}
 </p>
 <p class='bpcode w800'>	
-	PetStore p = client.getRemoteResource(PetStore.<jk>class</jk>);
+	PetStore p = client.getRemote(PetStore.<jk>class</jk>);
 </p>
 <p>
 	When a relative path is specified, it's relative to the root-url defined on the <c>RestClient</c> used to instantiate the interface.
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>(path=<js>"/petstore"</js>)
+	<ja>@Remote</ja>(path=<js>"/petstore"</js>)
 	<jk>public interface</jk> PetStore {...}
 </p>
 <p class='bpcode w800'>
 	RestClient client = RestClient.<jsm>create</jsm>().json().rootUrl(<js>"http://localhost:10000"</js>).build();	
-	PetStore p = client.getRemoteResource(PetStore.<jk>class</jk>);
+	PetStore p = client.getRemote(PetStore.<jk>class</jk>);
 </p>
 <p>
 	When no path is specified, the root-url defined on the <c>RestClient</c> is used.
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>
+	<ja>@Remote</ja>
 	<jk>public interface</jk> PetStore {...}
 </p>
 <p class='bpcode w800'>
 	RestClient client = RestClient.<jsm>create</jsm>().json().rootUrl(<js>"http://localhost:10000/petstore"</js>).build();	
-	PetStore p = client.getRemoteResource(PetStore.<jk>class</jk>);
+	PetStore p = client.getRemote(PetStore.<jk>class</jk>);
 </p>
 
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/02.RemoteMethod.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/02.RemoteMethod.html
index 74aa0a3..4d62e89 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/02.RemoteMethod.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/02.RemoteMethod.html
@@ -17,7 +17,7 @@
 
 <p>
 	The {@link oaj.http.remote.RemoteMethod @RemoteMethod} annotation is applied to methods
-	of <ja>@RemoteResource</ja>-annotated interfaces to identify REST endpoints.
+	of <ja>@Remote</ja>-annotated interfaces to identify REST endpoints.
 </p>
 <ul class='javatree'>
 	<li class='ja'>{@link oaj.http.remote.RemoteMethod}
@@ -33,7 +33,7 @@
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>
+	<ja>@Remote</ja>
 	<jk>public interface</jk> PetStore {
 		
 		<jc>// GET /pets/{petId}</jc>
@@ -54,7 +54,7 @@
 	For example, the <c>getPet</c> method below defaults to <c>GET /pet</c>:
 </p>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>
+	<ja>@Remote</ja>
 	<jk>public interface</jk> PetStore {
 		
 		<jc>// GET /pet</jc>
@@ -151,7 +151,7 @@
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>
+	<ja>@Remote</ja>
 	<jk>public interface</jk> PetStore {
 		
 		<jc>// POST /pets</jc>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/03.Body.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/03.Body.html
index cb587ec..edd6fb6 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/03.Body.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/03.Body.html
@@ -30,7 +30,7 @@
 <h5 class='figure'>Examples:</h5>
 <p class='bpcode w800'>
 	<jc>// Used on parameter</jc>
-	<ja>@RemoteResource</ja>(path=<js>"/petstore"</js>)
+	<ja>@Remote</ja>(path=<js>"/petstore"</js>)
 	<jk>public interface</jk> PetStore {
 
 		<ja>@RemoteMethod</ja>(path=<js>"/pets"</js>)
@@ -39,7 +39,7 @@
 </p>
 <p class='bpcode w800'>
 	<jc>// Used on class</jc>
-	<ja>@RemoteResource</ja>(path=<js>"/petstore"</js>)
+	<ja>@Remote</ja>(path=<js>"/petstore"</js>)
 	<jk>public interface</jk> PetStore {
 
 		<ja>@RemoteMethod</ja>(path=<js>"/pets"</js>)
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/04.FormData.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/04.FormData.html
index 5c81da8..a813e80 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/04.FormData.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/04.FormData.html
@@ -49,7 +49,7 @@
 
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>
-	<ja>@RemoteResource</ja>(path=<js>"/myproxy"</js>)
+	<ja>@Remote</ja>(path=<js>"/myproxy"</js>)
 	<jk>public interface</jk> MyProxy {
 
 		<jc>// Explicit names specified for form data parameters.</jc>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/05.Query.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/05.Query.html
index 3f3295e..c152440 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/05.Query.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/05.Query.html
@@ -49,7 +49,7 @@
 
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>
-	<ja>@RemoteResource</ja>(path=<js>"/myproxy"</js>)
+	<ja>@Remote</ja>(path=<js>"/myproxy"</js>)
 	<jk>public interface</jk> MyProxy {
  
 		<jc>// Explicit names specified for query parameters.</jc>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/06.Header.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/06.Header.html
index 7a69b79..72bba67 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/06.Header.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/06.Header.html
@@ -49,7 +49,7 @@
 
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>
-	<ja>@RemoteResource</ja>(path=<js>"/myproxy"</js>)
+	<ja>@Remote</ja>(path=<js>"/myproxy"</js>)
 	<jk>public interface</jk> MyProxy {
 
 		<jc>// Explicit names specified for HTTP headers.</jc>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/07.Path.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/07.Path.html
index 193c525..2f226b6 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/07.Path.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/07.Path.html
@@ -43,7 +43,7 @@
 
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>
-	<ja>@RemoteResource</ja>(path=<js>"/myproxy"</js>)
+	<ja>@Remote</ja>(path=<js>"/myproxy"</js>)
 	<jk>public interface</jk> MyProxy {
 
 		<jc>// Explicit names specified for path parameters.</jc>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/08.Request.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/08.Request.html
index cc4b45c..ef99d5d 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/08.Request.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/08.Request.html
@@ -30,7 +30,7 @@
 
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>
-	<ja>@RemoteResource</ja>(path=<js>"/petstore"</js>)
+	<ja>@Remote</ja>(path=<js>"/petstore"</js>)
 	<jk>public interface</jk> PetStore {
 
 		<ja>@RemoteMethod</ja>
@@ -64,7 +64,7 @@
 	}
 </p>
 <p class='bpcode w800'>
-	PetStore store = restClient.getRemoteResource(PetStore.<jk>class</jk>, <js>"http://localhost:10000"</js>);
+	PetStore store = restClient.getRemote(PetStore.<jk>class</jk>, <js>"http://localhost:10000"</js>);
 	CreatePetRequest requestBean = <jk>new</jk> CreatePetRequest(<js>"Fluffy"</js>, 9.99);
 	String response = store.postPet(requestBean);
 </p>
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/09.Response.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/09.Response.html
index 5a0c483..3091286 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/09.Response.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/09.Response.html
@@ -29,7 +29,7 @@
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>	
-	<ja>@RemoteResource</ja>
+	<ja>@Remote</ja>
 	<jk>public interface</jk> PetStore {
 		
 		<ja>@RemoteMethod</ja>
@@ -51,7 +51,7 @@
 	}
 </p>
 <p class='bpcode w800'>
-	PetStore store = restClient.getRemoteResource(PetStore.<jk>class</jk>, <js>"http://localhost:10000"</js>);
+	PetStore store = restClient.getRemote(PetStore.<jk>class</jk>, <js>"http://localhost:10000"</js>);
 	CreatePetResponse response = store.postPet(...);
 	Pet pet = response.getBody();
 	UUID uuid = response.getUUID();
diff --git a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/10.DualPurposeInterfaces.html b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/10.DualPurposeInterfaces.html
index 8e0f468..451153d 100644
--- a/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/10.DualPurposeInterfaces.html
+++ b/juneau-doc/docs/Topics/09.juneau-rest-client/01.RestProxies/10.DualPurposeInterfaces.html
@@ -27,11 +27,11 @@ Dual-purpose (end-to-end) interfaces
 	annotations defined on overridden methods.
 </p>
 <p>
-	The general approach is to define your {@link oajr.client.remote.RemoteResource @RemoteResource}-annotated interface first.
+	The general approach is to define your {@link oajr.client.remote.Remote @Remote}-annotated interface first.
 	The following example is pulled from the PetStore app:
 </p>
 <p class='bpcode w800'>
-	<ja>@RemoteResource</ja>(path=<js>"/petstore"</js>)
+	<ja>@Remote</ja>(path=<js>"/petstore"</js>)
 	<jk>public interface</jk> PetStore {
 	
 		<ja>@RemoteMethod</ja>(method=<jsf>GET</jsf>, path=<js>"/pet"</js>)
@@ -97,7 +97,7 @@ Dual-purpose (end-to-end) interfaces
 </p>
 <p class='bpcode w800'>
 	<jk>try</jk> (RestClient rc = RestClient.<jsm>create</jsm>().json().rootUrl(<js>"http://localhost:10000"</js>).build()) {
-		PetStore ps = rc.getRemoteResource(PetStore.<jk>class</jk>);
+		PetStore ps = rc.getRemote(PetStore.<jk>class</jk>);
 
 		<jk>for</jk> (Pet x : ps.getPets()) {
 			ps.deletePet(<js>"my-special-key"</js>, x.getId());
diff --git a/juneau-doc/docs/Topics/10.juneau-rest-mock.html b/juneau-doc/docs/Topics/10.juneau-rest-mock.html
index 66607de..1b87c5b 100644
--- a/juneau-doc/docs/Topics/10.juneau-rest-mock.html
+++ b/juneau-doc/docs/Topics/10.juneau-rest-mock.html
@@ -48,7 +48,7 @@ juneau-rest-mock
 	<li class='jp'>{@link oajr.mock2}
 	<ul>
 		<li class='jc'>{@link oajr.mock2.MockRest} - API for unit testing {@link oajr.annotation.Rest @Rest}-annotated classes.
-		<li class='jc'>{@link oajr.mock2.MockRemoteResource} - API for unit testing {@link oaj.http.remote.RemoteResource @RemoteResource}-annotated classes.
+		<li class='jc'>{@link oajr.mock2.MockRemote} - API for unit testing {@link oaj.http.remote.Remote @Remote}-annotated classes.
 	</ul>
 </ul>
 
diff --git a/juneau-doc/docs/Topics/10.juneau-rest-mock/02.MockRemoteResource.html b/juneau-doc/docs/Topics/10.juneau-rest-mock/02.MockRemoteResource.html
index e11f364..f9c1a07 100644
--- a/juneau-doc/docs/Topics/10.juneau-rest-mock/02.MockRemoteResource.html
+++ b/juneau-doc/docs/Topics/10.juneau-rest-mock/02.MockRemoteResource.html
@@ -13,20 +13,20 @@
  ***************************************************************************************************************************/
  -->
 
-MockRemoteResource
+{updated} MockRemote
 
 <p>
-	The {@link oajr.mock2.MockRemoteResource} class is used for serverless unit testing of {@link oaj.http.remote.RemoteResource @RemoteResource}-annotated
+	The {@link oajr.mock2.MockRemote} class is used for serverless unit testing of {@link oaj.http.remote.Remote @Remote}-annotated
 	classes.  
 </p>
 <p>
-	The {@link oajr.mock2.MockRemoteResource} API requires a {@link oajr.annotation.Rest @Rest}-annotated class to be used as
+	The {@link oajr.mock2.MockRemote} API requires a {@link oajr.annotation.Rest @Rest}-annotated class to be used as
 	an underlying mocked resource to process the request and return a response.
 </p>
 <h5 class='figure'>Example:</h5>
 <p class='bpcode w800'>
 	<jc>// Our remote resource to test.</jc>
-	<ja>@RemoteResource</ja>
+	<ja>@Remote</ja>
 	<jk>public interface</jk> MyRemoteInterface {
 	
 		<ja>@RemoteMethod</ja>(httpMethod=<js>"GET"</js>, path=<js>"/echoQuery"</js>)
@@ -45,7 +45,7 @@ MockRemoteResource
 
 	<ja>@Test</ja>
 	<jk>public void</jk> testProxy() {
-		MyRemoteInterface mri = MockRemoteResource.build(MyRemoteInterface.<jk>class</jk>, MyRest.<jk>class</jk>);
+		MyRemoteInterface mri = MockRemote.build(MyRemoteInterface.<jk>class</jk>, MyRest.<jk>class</jk>);
 		<jsm>assertEquals</jsm>(123, mri.echoQuery(123));
 	}
 </p>
@@ -53,8 +53,8 @@ MockRemoteResource
 	It looks simple, but there's a lot going on here.   
 </p>
 <p>
-	Remote resource interfaces are normally created through the {@link oajrc.RestClient#getRemoteResource(Class)} method.
-	The {@link oajr.mock2.MockRemoteResource} will create a {@link oajrc.RestClient} using a specialized <c>HttpClientConnectionManager</c>
+	Remote resource interfaces are normally created through the {@link oajrc.RestClient#getRemote(Class)} method.
+	The {@link oajr.mock2.MockRemote} will create a {@link oajrc.RestClient} using a specialized <c>HttpClientConnectionManager</c>
 	designed to transform client-side <c>HttpRequest</c>/<c>HttpResponse</c> objects into server-side 
 	{@link oajr.mock2.MockServletRequest}/{@link oajr.mock2.MockServletResponse} objects and then pass those to the {@link oajr.mock2.MockRest} 
 	object described in the previous section.
@@ -65,24 +65,24 @@ MockRemoteResource
 </p>
 <hr>
 <p>
-	By default, the {@link oajr.mock2.MockRemoteResource} class uses JSON marshalling.
+	By default, the {@link oajr.mock2.MockRemote} class uses JSON marshalling.
 	This can be overridden via any of the following methods: 
 </p>
 <ul class='javatree'>
-	<li class='jm'>{@link oajr.mock2.MockRemoteResource#build(Class,Object,Marshall)}
-	<li class='jm'>{@link oajr.mock2.MockRemoteResource#build(Class,Object,Serializer,Parser)}
-	<li class='jm'>{@link oajr.mock2.MockRemoteResource#create(Class,Object,Marshall)}
-	<li class='jm'>{@link oajr.mock2.MockRemoteResource#create(Class,Object,Serializer,Parser)}
+	<li class='jm'>{@link oajr.mock2.MockRemote#build(Class,Object,Marshall)}
+	<li class='jm'>{@link oajr.mock2.MockRemote#build(Class,Object,Serializer,Parser)}
+	<li class='jm'>{@link oajr.mock2.MockRemote#create(Class,Object,Marshall)}
+	<li class='jm'>{@link oajr.mock2.MockRemote#create(Class,Object,Serializer,Parser)}
 </ul>
 <hr>
 <p>
-	The {@link oajr.mock2.MockRemoteResource} class has a debug mode that will cause your HTTP requests and responses to
+	The {@link oajr.mock2.MockRemote} class has a debug mode that will cause your HTTP requests and responses to
 	be sent to the console on both the client and server sides:
 </p>
 <p class='bpcode w800'>
 	<ja>@Test</ja>
 	<jk>public void</jk> testProxy() {
-		MyRemoteInterface mri = MockRemoteResource
+		MyRemoteInterface mri = MockRemote
 			.create(MyRemoteInterface.<jk>class</jk>, MyRest.<jk>class</jk>)
 			.debug()
 			.build();
diff --git a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
index bb34cde..d65c071 100644
--- a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
+++ b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/RequestBeanProxyTest.java
@@ -57,7 +57,7 @@ public class RequestBeanProxyTest {
 	// @Query - Simple values
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface A01_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoQuery")
@@ -87,8 +87,8 @@ public class RequestBeanProxyTest {
 		@Override public String getX7() { return "123"; }
 	}
 
-	static A01_RemoteResource a01a = MockRemoteResource.build(A01_RemoteResource.class, A.class, null);
-	static A01_RemoteResource a01b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(A01_RemoteResource.class);
+	static A01_RemoteResource a01a = MockRemote.build(A01_RemoteResource.class, A.class, null);
+	static A01_RemoteResource a01b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemote(A01_RemoteResource.class);
 
 	@Test
 	public void a01a_query_simpleVals_plainText() throws Exception {
@@ -107,7 +107,7 @@ public class RequestBeanProxyTest {
 	// @Query - Maps
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface A02_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoQuery")
@@ -136,8 +136,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static A02_RemoteResource a02a = MockRemoteResource.build(A02_RemoteResource.class, A.class, null);
-	static A02_RemoteResource a02b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(A02_RemoteResource.class);
+	static A02_RemoteResource a02a = MockRemote.build(A02_RemoteResource.class, A.class, null);
+	static A02_RemoteResource a02b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemote(A02_RemoteResource.class);
 
 	@Test
 	public void a02a_query_maps_plainText() throws Exception {
@@ -159,7 +159,7 @@ public class RequestBeanProxyTest {
 	// @Query - NameValuePairs
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface A03_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoQuery")
@@ -188,8 +188,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static A03_RemoteResource a03a = MockRemoteResource.build(A03_RemoteResource.class, A.class, null);
-	static A03_RemoteResource a03b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(A03_RemoteResource.class);
+	static A03_RemoteResource a03a = MockRemote.build(A03_RemoteResource.class, A.class, null);
+	static A03_RemoteResource a03b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemote(A03_RemoteResource.class);
 
 	@Test
 	public void a03a_query_nameValuePairs_plainText() throws Exception {
@@ -211,7 +211,7 @@ public class RequestBeanProxyTest {
 	// @Query - CharSequence
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface A04_RemoteResource {
 		@RemoteMethod(method="GET", path="/echoQuery")
 		String normal(@Request A04_Bean rb);
@@ -224,7 +224,7 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static A04_RemoteResource a04a = MockRemoteResource.build(A04_RemoteResource.class, A.class, null);
+	static A04_RemoteResource a04a = MockRemote.build(A04_RemoteResource.class, A.class, null);
 
 	@Test
 	public void a04a_query_charSequence() throws Exception {
@@ -236,7 +236,7 @@ public class RequestBeanProxyTest {
 	// @Query - Reader
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface A05_RemoteResource {
 		@RemoteMethod(method="GET", path="/echoQuery")
 		String normal(@Request A05_Bean rb);
@@ -249,7 +249,7 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static A05_RemoteResource a05a = MockRemoteResource.build(A05_RemoteResource.class, A.class, null);
+	static A05_RemoteResource a05a = MockRemote.build(A05_RemoteResource.class, A.class, null);
 
 	@Test
 	public void a05a_query_reader() throws Exception {
@@ -261,7 +261,7 @@ public class RequestBeanProxyTest {
 	// @Query - Collections
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface A06_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoQuery")
@@ -310,8 +310,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static A06_RemoteResource a06a = MockRemoteResource.build(A06_RemoteResource.class, A.class, null);
-	static A06_RemoteResource a06b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(A06_RemoteResource.class);
+	static A06_RemoteResource a06a = MockRemote.build(A06_RemoteResource.class, A.class, null);
+	static A06_RemoteResource a06b = MockRestClient.create(A.class, null).partSerializer(UonSerializer.class).build().getRemote(A06_RemoteResource.class);
 
 	@Test
 	public void a06a_query_collections_plainText() throws Exception {
@@ -345,7 +345,7 @@ public class RequestBeanProxyTest {
 	// @FormData, Simple values
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface C01_RemoteResource {
 
 		@RemoteMethod(method="POST", path="/echoFormData")
@@ -386,8 +386,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static C01_RemoteResource c01a = MockRemoteResource.build(C01_RemoteResource.class, C.class, null);
-	static C01_RemoteResource c01b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(C01_RemoteResource.class);
+	static C01_RemoteResource c01a = MockRemote.build(C01_RemoteResource.class, C.class, null);
+	static C01_RemoteResource c01b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemote(C01_RemoteResource.class);
 
 	@Test
 	public void c01a_formData_simpleVals_plainText() throws Exception {
@@ -409,7 +409,7 @@ public class RequestBeanProxyTest {
 	// @FormData, Maps
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface C02_RemoteResource {
 
 		@RemoteMethod(method="POST", path="/echoFormData")
@@ -438,8 +438,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static C02_RemoteResource c02a = MockRemoteResource.build(C02_RemoteResource.class, C.class, null);
-	static C02_RemoteResource c02b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(C02_RemoteResource.class);
+	static C02_RemoteResource c02a = MockRemote.build(C02_RemoteResource.class, C.class, null);
+	static C02_RemoteResource c02b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemote(C02_RemoteResource.class);
 
 	@Test
 	public void c02a_formData_maps_plainText() throws Exception {
@@ -461,7 +461,7 @@ public class RequestBeanProxyTest {
 	// @FormData, NameValuePairs
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface C03_RemoteResource {
 
 		@RemoteMethod(method="POST", path="/echoFormData")
@@ -490,8 +490,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static C03_RemoteResource c03a = MockRemoteResource.build(C03_RemoteResource.class, C.class, null);
-	static C03_RemoteResource c03b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(C03_RemoteResource.class);
+	static C03_RemoteResource c03a = MockRemote.build(C03_RemoteResource.class, C.class, null);
+	static C03_RemoteResource c03b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemote(C03_RemoteResource.class);
 
 	@Test
 	public void c03a_formData_nameValuePairs_plainText() throws Exception {
@@ -513,7 +513,7 @@ public class RequestBeanProxyTest {
 	// @FormData, CharSequence
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface C04_RemoteResource {
 		@RemoteMethod(method="POST", path="/echoFormData")
 		String normal(@Request C04_Bean rb);
@@ -526,7 +526,7 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static C04_RemoteResource c04a = MockRemoteResource.build(C04_RemoteResource.class, C.class, null);
+	static C04_RemoteResource c04a = MockRemote.build(C04_RemoteResource.class, C.class, null);
 
 	@Test
 	public void c04a_formDataCharSequence() throws Exception {
@@ -538,7 +538,7 @@ public class RequestBeanProxyTest {
 	// @FormData, Reader
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface C05_RemoteResource {
 		@RemoteMethod(method="POST", path="/echoFormData")
 		String normal(@Request C05_Bean rb);
@@ -551,7 +551,7 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static C05_RemoteResource c05a = MockRemoteResource.build(C05_RemoteResource.class, C.class, null);
+	static C05_RemoteResource c05a = MockRemote.build(C05_RemoteResource.class, C.class, null);
 
 	@Test
 	public void c05a_formDataReader() throws Exception {
@@ -563,7 +563,7 @@ public class RequestBeanProxyTest {
 	// @FormData, Collections
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface C06_RemoteResource {
 
 		@RemoteMethod(method="POST", path="/echoFormData")
@@ -612,8 +612,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static C06_RemoteResource c06a = MockRemoteResource.build(C06_RemoteResource.class, C.class, null);
-	static C06_RemoteResource c06b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(C06_RemoteResource.class);
+	static C06_RemoteResource c06a = MockRemote.build(C06_RemoteResource.class, C.class, null);
+	static C06_RemoteResource c06b = MockRestClient.create(C.class, null).partSerializer(UonSerializer.class).build().getRemote(C06_RemoteResource.class);
 
 	@Test
 	public void c06a_formData_collections_plainText() throws Exception {
@@ -648,7 +648,7 @@ public class RequestBeanProxyTest {
 	// @Header, Simple values
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface E01_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoHeaders")
@@ -689,8 +689,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static E01_RemoteResource e01a = MockRemoteResource.build(E01_RemoteResource.class, E.class, null);
-	static E01_RemoteResource e01b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(E01_RemoteResource.class);
+	static E01_RemoteResource e01a = MockRemote.build(E01_RemoteResource.class, E.class, null);
+	static E01_RemoteResource e01b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemote(E01_RemoteResource.class);
 
 	@Test
 	public void e01a_headerSimpleValsPlainText() throws Exception {
@@ -712,7 +712,7 @@ public class RequestBeanProxyTest {
 	// @Header, Maps
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface E02_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoHeaders")
@@ -741,8 +741,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static E02_RemoteResource e02a = MockRemoteResource.build(E02_RemoteResource.class, E.class, null);
-	static E02_RemoteResource e02b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(E02_RemoteResource.class);
+	static E02_RemoteResource e02a = MockRemote.build(E02_RemoteResource.class, E.class, null);
+	static E02_RemoteResource e02b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemote(E02_RemoteResource.class);
 
 	@Test
 	public void e02a_header_maps_plainText() throws Exception {
@@ -764,7 +764,7 @@ public class RequestBeanProxyTest {
 	// @Header, NameValuePairs
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface E03_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoHeaders")
@@ -793,8 +793,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static E03_RemoteResource e03a = MockRemoteResource.build(E03_RemoteResource.class, E.class, null);
-	static E03_RemoteResource e03b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(E03_RemoteResource.class);
+	static E03_RemoteResource e03a = MockRemote.build(E03_RemoteResource.class, E.class, null);
+	static E03_RemoteResource e03b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemote(E03_RemoteResource.class);
 
 	@Test
 	public void e03a_header_nameValuePairs_plainText() throws Exception {
@@ -816,7 +816,7 @@ public class RequestBeanProxyTest {
 	// @Header, Collections
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface E04_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoHeaders")
@@ -865,8 +865,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static E04_RemoteResource e04a = MockRemoteResource.build(E04_RemoteResource.class, E.class, null);
-	static E04_RemoteResource e04b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(E04_RemoteResource.class);
+	static E04_RemoteResource e04a = MockRemote.build(E04_RemoteResource.class, E.class, null);
+	static E04_RemoteResource e04b = MockRestClient.create(E.class, null).partSerializer(UonSerializer.class).build().getRemote(E04_RemoteResource.class);
 
 	@Test
 	public void e04a_header_collections_plainText() throws Exception {
@@ -900,7 +900,7 @@ public class RequestBeanProxyTest {
 	// @Path, Simple values
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface G01_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoPath/{a}/{b}/{c}/{e}/{g}/{h}")
@@ -937,8 +937,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static G01_RemoteResource g01a = MockRemoteResource.build(G01_RemoteResource.class, G.class, null);
-	static G01_RemoteResource g01b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(G01_RemoteResource.class);
+	static G01_RemoteResource g01a = MockRemote.build(G01_RemoteResource.class, G.class, null);
+	static G01_RemoteResource g01b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemote(G01_RemoteResource.class);
 
 	@Test
 	public void g01a_pathSimpleValsPlainText() throws Exception {
@@ -960,7 +960,7 @@ public class RequestBeanProxyTest {
 	// @Path, Maps
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface G02_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoPath/{a1}/{a2}/{a3}/{a4}/{b1}/{b2}/{b3}/{c1}/{c2}/{c3}/{c4}")
@@ -989,8 +989,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static G02_RemoteResource g02a = MockRemoteResource.build(G02_RemoteResource.class, G.class, null);
-	static G02_RemoteResource g02b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(G02_RemoteResource.class);
+	static G02_RemoteResource g02a = MockRemote.build(G02_RemoteResource.class, G.class, null);
+	static G02_RemoteResource g02b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemote(G02_RemoteResource.class);
 
 	@Test
 	public void g02a_path_maps_plainText() throws Exception {
@@ -1012,7 +1012,7 @@ public class RequestBeanProxyTest {
 	// @Path, NameValuePairs
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface G03_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoPath/{a1}/{a2}/{a3}/{a4}/{b1}/{b2}/{b3}/{c1}/{c2}/{c3}/{c4}")
@@ -1041,8 +1041,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static G03_RemoteResource g03a = MockRemoteResource.build(G03_RemoteResource.class, G.class, null);
-	static G03_RemoteResource g03b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(G03_RemoteResource.class);
+	static G03_RemoteResource g03a = MockRemote.build(G03_RemoteResource.class, G.class, null);
+	static G03_RemoteResource g03b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemote(G03_RemoteResource.class);
 
 	@Test
 	public void g03a_path_nameValuePairs_plainText() throws Exception {
@@ -1064,7 +1064,7 @@ public class RequestBeanProxyTest {
 	// @Path, Collections
 	//=================================================================================================================
 
-	@RemoteResource(path="/")
+	@Remote(path="/")
 	public static interface G04_RemoteResource {
 
 		@RemoteMethod(method="GET", path="/echoPath/{a}/{b}/{c}/{d}/{f}/{g}/{h}")
@@ -1105,8 +1105,8 @@ public class RequestBeanProxyTest {
 		}
 	}
 
-	static G04_RemoteResource g04a = MockRemoteResource.build(G04_RemoteResource.class, G.class, null);
-	static G04_RemoteResource g04b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemoteResource(G04_RemoteResource.class);
+	static G04_RemoteResource g04a = MockRemote.build(G04_RemoteResource.class, G.class, null);
+	static G04_RemoteResource g04b = MockRestClient.create(G.class, null).partSerializer(UonSerializer.class).build().getRemote(G04_RemoteResource.class);
 
 	@Test
 	public void g04a_path_collections_plainText() throws Exception {
diff --git a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
index d89c438..dce4c29 100644
--- a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
+++ b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
@@ -65,7 +65,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
 	public ThirdPartyProxyTest(String label, Serializer serializer, Parser parser) {
 		proxy = getCached(label, ThirdPartyProxy.class);
 		if (proxy == null) {
-			this.proxy = getClient(label, serializer, parser).builder().partSerializer(UonSerializer.DEFAULT.builder().addBeanTypes().addRootType().build()).build().getRemoteResource(ThirdPartyProxy.class, null, serializer, parser);
+			this.proxy = getClient(label, serializer, parser).builder().partSerializer(UonSerializer.DEFAULT.builder().addBeanTypes().addRootType().build()).build().getRemote(ThirdPartyProxy.class, null, serializer, parser);
 			cache(label, proxy);
 		}
 	}
@@ -1593,7 +1593,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
 	// Proxy class
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@RemoteResource(path="/testThirdPartyProxy")
+	@Remote(path="/testThirdPartyProxy")
 	public static interface ThirdPartyProxy {
 
 		//-------------------------------------------------------------------------------------------------------------
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/BodyAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/BodyAnnotationTest.java
index 97b17da..afae550 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/BodyAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/BodyAnnotationTest.java
@@ -115,7 +115,7 @@ public class BodyAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface A01 {
 		String postA01(@Body int b);
 		String postA02(@Body float b);
@@ -129,7 +129,7 @@ public class BodyAnnotationTest {
 		String postA10(@Body NameValuePairs b);
 	}
 
-	private static A01 a01 = MockRemoteResource.create(A01.class, A.class).parser(null).build();
+	private static A01 a01 = MockRemote.create(A01.class, A.class).parser(null).build();
 
 	@Test
 	public void a01_int() throws Exception {
@@ -239,7 +239,7 @@ public class BodyAnnotationTest {
 			return b;
 		}
 	}
-	@RemoteResource
+	@Remote
 	public static interface B01 {
 		String postB01(@Body int b);
 		String postB02(@Body float b);
@@ -253,7 +253,7 @@ public class BodyAnnotationTest {
 		String postB10(@Body NameValuePairs b);
 	}
 
-	private static B01 b01 = MockRemoteResource.create(B01.class, B.class).marshall(OpenApi.DEFAULT).contentType(null).build();
+	private static B01 b01 = MockRemote.create(B01.class, B.class).marshall(OpenApi.DEFAULT).contentType(null).build();
 
 	@Test
 	public void b01_int() throws Exception {
@@ -364,7 +364,7 @@ public class BodyAnnotationTest {
 			return b;
 		}
 	}
-	@RemoteResource
+	@Remote
 	public static interface C01 {
 		String postC01(@Body int b);
 		String postC02(@Body float b);
@@ -378,7 +378,7 @@ public class BodyAnnotationTest {
 		String postC10(@Body NameValuePairs b);
 	}
 
-	private static C01 c01 = MockRemoteResource.create(C01.class, C.class).serializer(null).contentType("text/foo").build();
+	private static C01 c01 = MockRemote.create(C01.class, C.class).serializer(null).contentType("text/foo").build();
 
 	@Test
 	public void c01_int() throws Exception {
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/EndToEndInterfaceTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/EndToEndInterfaceTest.java
index edc9d7d..6a0d510 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/EndToEndInterfaceTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/EndToEndInterfaceTest.java
@@ -30,7 +30,7 @@ import org.apache.juneau.http.remote.*;
 import org.apache.juneau.rest.mock2.*;
 import org.apache.juneau.http.exception.*;
 import org.apache.juneau.rest.helper.*;
-import org.apache.juneau.rest.mock2.MockRemoteResource;
+import org.apache.juneau.rest.mock2.MockRemote;
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.utils.*;
 import org.junit.*;
@@ -46,7 +46,7 @@ public class EndToEndInterfaceTest {
 	// Simple tests, split annotations.
 	//=================================================================================================================
 
-	@RemoteResource
+	@Remote
 	public static interface IA {
 
 		@RemoteMethod(method="PUT", path="/a01")
@@ -81,7 +81,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static IA ia = MockRemoteResource.build(IA.class, A.class, Json.DEFAULT);
+	private static IA ia = MockRemote.build(IA.class, A.class, Json.DEFAULT);
 
 	@Test
 	public void a01_splitAnnotations_Body() throws Exception {
@@ -100,7 +100,7 @@ public class EndToEndInterfaceTest {
 	// Simple tests, combined annotations.
 	//=================================================================================================================
 
-	@RemoteResource
+	@Remote
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="text/json")
 	public static interface IB {
 
@@ -135,7 +135,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static IB ib = MockRemoteResource.build(IB.class, B.class);
+	private static IB ib = MockRemote.build(IB.class, B.class);
 
 	@Test
 	public void b01_combinedAnnotations_Body() throws Exception {
@@ -154,7 +154,7 @@ public class EndToEndInterfaceTest {
 	// Standard responses
 	//=================================================================================================================
 
-	@RemoteResource
+	@Remote
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="text/json")
 	public static interface IC {
 		@RemoteMethod @RestMethod Ok ok();
@@ -206,7 +206,7 @@ public class EndToEndInterfaceTest {
 		@Override public UseProxy useProxy() { return UseProxy.INSTANCE; }
 	}
 
-	private static IC ic = MockRestClient.create(C.class).json().disableRedirectHandling().build().getRemoteResource(IC.class);
+	private static IC ic = MockRestClient.create(C.class).json().disableRedirectHandling().build().getRemote(IC.class);
 
 	@Test
 	public void c01_standardResponses_Ok() throws Exception {
@@ -305,7 +305,7 @@ public class EndToEndInterfaceTest {
 	// ReaderResource and StreamResource responses
 	//=================================================================================================================
 
-	@RemoteResource
+	@Remote
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="text/json")
 	public static interface ID {
 		@RemoteMethod @RestMethod StreamResource streamResource() throws IOException ;
@@ -325,7 +325,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static ID id = MockRemoteResource.build(ID.class, D.class);
+	private static ID id = MockRemote.build(ID.class, D.class);
 
 	@Test
 	public void d01_StreamResource() throws Exception {
@@ -343,7 +343,7 @@ public class EndToEndInterfaceTest {
 		assertEquals("text/foo", r.getMediaType().toString());
 	}
 
-	private static ID id2 = MockRemoteResource.build(ID.class, D.class);
+	private static ID id2 = MockRemote.build(ID.class, D.class);
 
 	@Test
 	public void d03_StreamResource_noMediaTypes() throws Exception {
@@ -365,7 +365,7 @@ public class EndToEndInterfaceTest {
 	// Predefined exceptions
 	//=================================================================================================================
 
-	@RemoteResource
+	@Remote
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="text/json")
 	public static interface IE {
 		@RemoteMethod @RestMethod void badRequest() throws BadRequest;
@@ -538,7 +538,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static IE iea = MockRemoteResource.build(IE.class, EA.class);
+	private static IE iea = MockRemote.build(IE.class, EA.class);
 
 	@Test
 	public void ea01_badRequest() {
@@ -973,7 +973,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static IE ieb = MockRemoteResource.build(IE.class, EB.class);
+	private static IE ieb = MockRemote.build(IE.class, EB.class);
 
 	@Test
 	public void eb01_badRequest() {
@@ -1277,7 +1277,7 @@ public class EndToEndInterfaceTest {
 	// Throwables returned by method instead of thrown.
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@RemoteResource
+	@Remote
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="text/json")
 	public static interface IF {
 		@RemoteMethod @RestMethod BadRequest badRequest();
@@ -1450,7 +1450,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static IF ifa = MockRemoteResource.build(IF.class, F.class);
+	private static IF ifa = MockRemote.build(IF.class, F.class);
 
 	@Test
 	public void fa01_badRequest() {
@@ -1588,7 +1588,7 @@ public class EndToEndInterfaceTest {
 	// Reader/InputStream return types.
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@RemoteResource
+	@Remote
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="text/json")
 	public static interface IG {
 		@RemoteMethod @RestMethod Reader reader();
@@ -1606,7 +1606,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static IG ig = MockRemoteResource.build(IG.class, G.class);
+	private static IG ig = MockRemote.build(IG.class, G.class);
 
 	@Test
 	public void g01_reader() throws Exception {
@@ -1621,7 +1621,7 @@ public class EndToEndInterfaceTest {
 	// Helper responses
 	//=================================================================================================================
 
-	@RemoteResource
+	@Remote
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="text/json")
 	public static interface IH {
 		@RemoteMethod @RestMethod SeeOtherRoot seeOtherRoot();
@@ -1634,7 +1634,7 @@ public class EndToEndInterfaceTest {
 		}
 	}
 
-	private static IH ih = MockRestClient.create(H.class).json().disableRedirectHandling().build().getRemoteResource(IH.class);
+	private static IH ih = MockRestClient.create(H.class).json().disableRedirectHandling().build().getRemote(IH.class);
 
 	@Test
 	public void h01_seeOtherRoot() throws Exception {
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/FormDataAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/FormDataAnnotationTest.java
index c3872d6..c2daa81 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/FormDataAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/FormDataAnnotationTest.java
@@ -62,7 +62,7 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface AR {
 		@RemoteMethod(path="a") String postA01(@FormData("x") int b);
 		@RemoteMethod(path="a") String postA02(@FormData("x") float b);
@@ -86,7 +86,7 @@ public class FormDataAnnotationTest {
 		@RemoteMethod(path="a") String postA09b(@FormData NameValuePairs b);
 	}
 
-	private static AR ar = MockRemoteResource.build(AR.class, A.class, null);
+	private static AR ar = MockRemote.build(AR.class, A.class, null);
 
 	@Test
 	public void a01_int() throws Exception {
@@ -181,7 +181,7 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface BR {
 		@RemoteMethod(path="/") String postB01(@FormData(name="x",_default="foo") String b);
 		@RemoteMethod(path="/") String postB02(@FormData(name="x",_default="foo",allowEmptyValue=true) String b);
@@ -189,7 +189,7 @@ public class FormDataAnnotationTest {
 		@RemoteMethod(path="/") String postB04(@FormData(name="x",_default="",allowEmptyValue=true) String b);
 	}
 
-	private static BR br = MockRemoteResource.build(BR.class, B.class, null);
+	private static BR br = MockRemote.build(BR.class, B.class, null);
 
 	@Test
 	public void b01a_default() throws Exception {
@@ -248,7 +248,7 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface CR {
 		@RemoteMethod(path="/a") String postC01a(@FormData(name="x") String...b);
 		@RemoteMethod(path="/b") String postC01b(@FormData(name="x") String...b);
@@ -266,7 +266,7 @@ public class FormDataAnnotationTest {
 		@RemoteMethod(path="/b") String postC07b(@FormData(name="x",collectionFormat="uon") String...b);
 	}
 
-	private static CR cr = MockRemoteResource.build(CR.class, C.class, null);
+	private static CR cr = MockRemote.build(CR.class, C.class, null);
 
 	@Test
 	public void c01a_default() throws Exception {
@@ -339,7 +339,7 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface DR {
 		@RemoteMethod(path="/") String postC01a(@FormData(name="x",minimum="1",maximum="10") int b);
 		@RemoteMethod(path="/") String postC01b(@FormData(name="x",minimum="1",maximum="10",exclusiveMinimum=false,exclusiveMaximum=false) int b);
@@ -386,7 +386,7 @@ public class FormDataAnnotationTest {
 		@RemoteMethod(path="/") String postC16c(@FormData(name="x",minimum="1",maximum="10",exclusiveMinimum=true,exclusiveMaximum=true) Byte b);
 	}
 
-	private static DR dr = MockRemoteResource.build(DR.class, D.class, null);
+	private static DR dr = MockRemote.build(DR.class, D.class, null);
 
 	@Test
 	public void d01a_int_defaultExclusive() throws Exception {
@@ -713,7 +713,7 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface ER {
 		@RemoteMethod(path="/") String postE01(@FormData(name="x",collectionFormat="pipes",minItems=1,maxItems=2) String...b);
 		@RemoteMethod(path="/") String postE02(@FormData(name="x",items=@Items(collectionFormat="pipes",minItems=1,maxItems=2)) String[]...b);
@@ -723,7 +723,7 @@ public class FormDataAnnotationTest {
 		@RemoteMethod(path="/") String postE06(@FormData(name="x",items=@Items(collectionFormat="pipes",uniqueItems=true)) String[]...b);
 	}
 
-	private static ER er = MockRemoteResource.build(ER.class, E.class, null);
+	private static ER er = MockRemote.build(ER.class, E.class, null);
 
 	@Test
 	public void e01_minMax() throws Exception {
@@ -772,7 +772,7 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface FR {
 		@RemoteMethod(path="/") String postF01(@FormData(name="x",minLength=2,maxLength=3) String b);
 		@RemoteMethod(path="/") String postF02(@FormData(name="x",collectionFormat="pipes",items=@Items(minLength=2,maxLength=3)) String...b);
@@ -782,7 +782,7 @@ public class FormDataAnnotationTest {
 		@RemoteMethod(path="/") String postF06(@FormData(name="x",collectionFormat="pipes",items=@Items(pattern="foo\\d{1,3}")) String...b);
 	}
 
-	private static FR fr = MockRemoteResource.build(FR.class, F.class, null);
+	private static FR fr = MockRemote.build(FR.class, F.class, null);
 
 	@Test
 	public void f01_minMaxLength() throws Exception {
@@ -837,7 +837,7 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface GR {
 		@RemoteMethod(path="/") String postG01(@FormData(name="x",multipleOf="2") int b);
 		@RemoteMethod(path="/") String postG02(@FormData(name="x",multipleOf="2") short b);
@@ -855,7 +855,7 @@ public class FormDataAnnotationTest {
 		@RemoteMethod(path="/") String postG16(@FormData(name="x",multipleOf="2") Byte b);
 	}
 
-	private static GR gr = MockRemoteResource.build(GR.class, G.class, null);
+	private static GR gr = MockRemote.build(GR.class, G.class, null);
 
 	@Test
 	public void g01_multipleOf_int() throws Exception {
@@ -940,14 +940,14 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface HR {
 		@RemoteMethod(path="/") String postH01(@FormData(name="x") String b);
 		@RemoteMethod(path="/") String postH02(@FormData(name="x",required=false) String b);
 		@RemoteMethod(path="/") String postH03(@FormData(name="x",required=true) String b);
 	}
 
-	private static HR hr = MockRemoteResource.build(HR.class, H.class, null);
+	private static HR hr = MockRemote.build(HR.class, H.class, null);
 
 	@Test
 	public void h01_required_default() throws Exception {
@@ -975,14 +975,14 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface IR {
 		@RemoteMethod(path="/") String postI01(@FormData(name="x",allowEmptyValue=true) String b);
 		@RemoteMethod(path="/") String postI02(@FormData(name="x",allowEmptyValue=true,skipIfEmpty=false) String b);
 		@RemoteMethod(path="/") String postI03(@FormData(name="x",skipIfEmpty=true) String b);
 	}
 
-	private static IR ir = MockRemoteResource.build(IR.class, I.class, null);
+	private static IR ir = MockRemote.build(IR.class, I.class, null);
 
 	@Test
 	public void h01_skipIfEmpty_default() throws Exception {
@@ -1009,12 +1009,12 @@ public class FormDataAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface JR {
 		@RemoteMethod(path="/") String postJ01(@FormData(name="x",serializer=XPartSerializer.class) String b);
 	}
 
-	private static JR jr = MockRemoteResource.build(JR.class, J.class, null);
+	private static JR jr = MockRemote.build(JR.class, J.class, null);
 
 	@Test
 	public void j01_serializer() throws Exception {
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/HeaderAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/HeaderAnnotationTest.java
index cb67525..bbbbcf8 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/HeaderAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/HeaderAnnotationTest.java
@@ -60,7 +60,7 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface A01 {
 		@RemoteMethod(path="a") String getA01(@Header("x") int b);
 		@RemoteMethod(path="a") String getA02(@Header("x") float b);
@@ -80,7 +80,7 @@ public class HeaderAnnotationTest {
 		@RemoteMethod(path="a") String getA09b(@Header NameValuePairs b);
 	}
 
-	private static A01 a01 = MockRemoteResource.build(A01.class, A.class, null);
+	private static A01 a01 = MockRemote.build(A01.class, A.class, null);
 
 	@Test
 	public void a01_int() throws Exception {
@@ -160,7 +160,7 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface BR {
 		@RemoteMethod(path="/") String getB01(@Header(name="x",_default="foo") String b);
 		@RemoteMethod(path="/") String getB02(@Header(name="x",_default="foo",allowEmptyValue=true) String b);
@@ -168,7 +168,7 @@ public class HeaderAnnotationTest {
 		@RemoteMethod(path="/") String getB04(@Header(name="x",_default="",allowEmptyValue=true) String b);
 	}
 
-	private static BR br = MockRemoteResource.build(BR.class, B.class, null);
+	private static BR br = MockRemote.build(BR.class, B.class, null);
 
 	@Test
 	public void b01a_default() throws Exception {
@@ -224,7 +224,7 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface CR {
 		@RemoteMethod(path="/a") String getC01(@Header(name="x") String...b);
 		@RemoteMethod(path="/a") String getC02(@Header(name="x",collectionFormat="csv") String...b);
@@ -235,7 +235,7 @@ public class HeaderAnnotationTest {
 		@RemoteMethod(path="/a") String getC07(@Header(name="x",collectionFormat="uon") String...b);
 	}
 
-	private static CR cr = MockRemoteResource.build(CR.class, C.class, null);
+	private static CR cr = MockRemote.build(CR.class, C.class, null);
 
 	@Test
 	public void c01a_default() throws Exception {
@@ -280,7 +280,7 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface DR {
 		@RemoteMethod(path="/") String getC01a(@Header(name="x",minimum="1",maximum="10") int b);
 		@RemoteMethod(path="/") String getC01b(@Header(name="x",minimum="1",maximum="10",exclusiveMinimum=false,exclusiveMaximum=false) int b);
@@ -326,7 +326,7 @@ public class HeaderAnnotationTest {
 		@RemoteMethod(path="/") String getC16c(@Header(name="x",minimum="1",maximum="10",exclusiveMinimum=true,exclusiveMaximum=true) Byte b);
 	}
 
-	private static DR dr = MockRemoteResource.build(DR.class, D.class, null);
+	private static DR dr = MockRemote.build(DR.class, D.class, null);
 
 	@Test
 	public void d01a_int_defaultExclusive() throws Exception {
@@ -654,7 +654,7 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface ER {
 		@RemoteMethod(path="/") String getE01(@Header(name="x",collectionFormat="pipes",minItems=1,maxItems=2) String...b);
 		@RemoteMethod(path="/") String getE02(@Header(name="x",items=@Items(collectionFormat="pipes",minItems=1,maxItems=2)) String[]...b);
@@ -664,7 +664,7 @@ public class HeaderAnnotationTest {
 		@RemoteMethod(path="/") String getE06(@Header(name="x",items=@Items(collectionFormat="pipes",uniqueItems=true)) String[]...b);
 	}
 
-	private static ER er = MockRemoteResource.build(ER.class, E.class, null);
+	private static ER er = MockRemote.build(ER.class, E.class, null);
 
 	@Test
 	public void e01_minMax() throws Exception {
@@ -714,7 +714,7 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface FR {
 		@RemoteMethod(path="/") String getF01(@Header(name="x",minLength=2,maxLength=3) String b);
 		@RemoteMethod(path="/") String getF02(@Header(name="x",collectionFormat="pipes",items=@Items(minLength=2,maxLength=3)) String...b);
@@ -724,7 +724,7 @@ public class HeaderAnnotationTest {
 		@RemoteMethod(path="/") String getF06(@Header(name="x",collectionFormat="pipes",items=@Items(pattern="foo\\d{1,3}")) String...b);
 	}
 
-	private static FR fr = MockRemoteResource.build(FR.class, F.class, null);
+	private static FR fr = MockRemote.build(FR.class, F.class, null);
 
 	@Test
 	public void f01_minMaxLength() throws Exception {
@@ -780,7 +780,7 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface GR {
 		@RemoteMethod(path="/") String getG01(@Header(name="x",multipleOf="2") int b);
 		@RemoteMethod(path="/") String getG02(@Header(name="x",multipleOf="2") short b);
@@ -798,7 +798,7 @@ public class HeaderAnnotationTest {
 		@RemoteMethod(path="/") String getG16(@Header(name="x",multipleOf="2") Byte b);
 	}
 
-	private static GR gr = MockRemoteResource.build(GR.class, G.class, null);
+	private static GR gr = MockRemote.build(GR.class, G.class, null);
 
 	@Test
 	public void g01_multipleOf_int() throws Exception {
@@ -884,14 +884,14 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface HR {
 		@RemoteMethod(path="/") String getH01(@Header(name="x") String b);
 		@RemoteMethod(path="/") String getH02(@Header(name="x",required=false) String b);
 		@RemoteMethod(path="/") String getH03(@Header(name="x",required=true) String b);
 	}
 
-	private static HR hr = MockRemoteResource.build(HR.class, H.class, null);
+	private static HR hr = MockRemote.build(HR.class, H.class, null);
 
 	@Test
 	public void h01_required_default() throws Exception {
@@ -920,14 +920,14 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface IR {
 		@RemoteMethod(path="/") String getI01(@Header(name="x",allowEmptyValue=true) String b);
 		@RemoteMethod(path="/") String getI02(@Header(name="x",allowEmptyValue=true,skipIfEmpty=false) String b);
 		@RemoteMethod(path="/") String getI03(@Header(name="x",skipIfEmpty=true) String b);
 	}
 
-	private static IR ir = MockRemoteResource.build(IR.class, I.class, null);
+	private static IR ir = MockRemote.build(IR.class, I.class, null);
 
 	@Test
 	public void h01_skipIfEmpty_default() throws Exception {
@@ -955,12 +955,12 @@ public class HeaderAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface JR {
 		@RemoteMethod(path="/") String getJ01(@Header(name="x",serializer=XPartSerializer.class) String b);
 	}
 
-	private static JR jr = MockRemoteResource.build(JR.class, J.class, null);
+	private static JR jr = MockRemote.build(JR.class, J.class, null);
 
 	@Test
 	public void j01_serializer() throws Exception {
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/PathAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/PathAnnotationTest.java
index 5b0b0fc..11eb3d2 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/PathAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/PathAnnotationTest.java
@@ -59,7 +59,7 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface A01 {
 		@RemoteMethod(path="a/{x}") String getA01(@Path("x") int b);
 		@RemoteMethod(path="a/{x}") String getA02(@Path("x") float b);
@@ -79,7 +79,7 @@ public class PathAnnotationTest {
 		@RemoteMethod(path="a/{x}") String getA09b(@Path NameValuePairs b);
 	}
 
-	private static A01 a01 = MockRemoteResource.build(A01.class, A.class, null);
+	private static A01 a01 = MockRemote.build(A01.class, A.class, null);
 
 	@Test
 	public void a01_int() throws Exception {
@@ -159,7 +159,7 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface CR {
 		@RemoteMethod(path="/a/{x}") String getC01(@Path(name="x") String...b);
 		@RemoteMethod(path="/a/{x}") String getC02(@Path(name="x",collectionFormat="csv") String...b);
@@ -170,7 +170,7 @@ public class PathAnnotationTest {
 		@RemoteMethod(path="/a/{x}") String getC07(@Path(name="x",collectionFormat="uon") String...b);
 	}
 
-	private static CR cr = MockRemoteResource.build(CR.class, C.class, null);
+	private static CR cr = MockRemote.build(CR.class, C.class, null);
 
 	@Test
 	public void c01a_default() throws Exception {
@@ -215,7 +215,7 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface DR {
 		@RemoteMethod(path="/a/{x}") String getC01a(@Path(name="x",minimum="1",maximum="10") int b);
 		@RemoteMethod(path="/a/{x}") String getC01b(@Path(name="x",minimum="1",maximum="10",exclusiveMinimum=false,exclusiveMaximum=false) int b);
@@ -261,7 +261,7 @@ public class PathAnnotationTest {
 		@RemoteMethod(path="/a/{x}") String getC16c(@Path(name="x",minimum="1",maximum="10",exclusiveMinimum=true,exclusiveMaximum=true) Byte b);
 	}
 
-	private static DR dr = MockRemoteResource.build(DR.class, D.class, null);
+	private static DR dr = MockRemote.build(DR.class, D.class, null);
 
 	@Test
 	public void d01a_int_defaultExclusive() throws Exception {
@@ -571,7 +571,7 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface ER {
 		@RemoteMethod(path="/{x}") String getE01(@Path(name="x",collectionFormat="pipes",minItems=1,maxItems=2) String...b);
 		@RemoteMethod(path="/{x}") String getE02(@Path(name="x",items=@Items(collectionFormat="pipes",minItems=1,maxItems=2)) String[]...b);
@@ -581,7 +581,7 @@ public class PathAnnotationTest {
 		@RemoteMethod(path="/{x}") String getE06(@Path(name="x",items=@Items(collectionFormat="pipes",uniqueItems=true)) String[]...b);
 	}
 
-	private static ER er = MockRemoteResource.build(ER.class, E.class, null);
+	private static ER er = MockRemote.build(ER.class, E.class, null);
 
 	@Test
 	public void e01_minMax() throws Exception {
@@ -631,7 +631,7 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface FR {
 		@RemoteMethod(path="/{x}") String getF01(@Path(name="x",minLength=2,maxLength=3) String b);
 		@RemoteMethod(path="/{x}") String getF02(@Path(name="x",collectionFormat="pipes",items=@Items(minLength=2,maxLength=3)) String...b);
@@ -641,7 +641,7 @@ public class PathAnnotationTest {
 		@RemoteMethod(path="/{x}") String getF06(@Path(name="x",collectionFormat="pipes",items=@Items(pattern="foo\\d{1,3}")) String...b);
 	}
 
-	private static FR fr = MockRemoteResource.build(FR.class, F.class, null);
+	private static FR fr = MockRemote.build(FR.class, F.class, null);
 
 	@Test
 	public void f01_minMaxLength() throws Exception {
@@ -694,7 +694,7 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface GR {
 		@RemoteMethod(path="/{x}") String getG01(@Path(name="x",multipleOf="2") int b);
 		@RemoteMethod(path="/{x}") String getG02(@Path(name="x",multipleOf="2") short b);
@@ -712,7 +712,7 @@ public class PathAnnotationTest {
 		@RemoteMethod(path="/{x}") String getG16(@Path(name="x",multipleOf="2") Byte b);
 	}
 
-	private static GR gr = MockRemoteResource.build(GR.class, G.class, null);
+	private static GR gr = MockRemote.build(GR.class, G.class, null);
 
 	@Test
 	public void g01_multipleOf_int() throws Exception {
@@ -798,12 +798,12 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface HR {
 		@RemoteMethod(path="/{x}") String getH01(@Path(name="x") String b);
 	}
 
-	private static HR hr = MockRemoteResource.build(HR.class, H.class);
+	private static HR hr = MockRemote.build(HR.class, H.class);
 
 	@Test
 	public void h01_required_default() throws Exception {
@@ -823,12 +823,12 @@ public class PathAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface JR {
 		@RemoteMethod(path="/{x}") String getJ01(@Path(name="x",serializer=XPartSerializer.class) String b);
 	}
 
-	private static JR jr = MockRemoteResource.build(JR.class, J.class, null);
+	private static JR jr = MockRemote.build(JR.class, J.class, null);
 
 	@Test
 	public void j01_serializer() throws Exception {
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/QueryAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/QueryAnnotationTest.java
index 9068857..e02c4d3 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/QueryAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/QueryAnnotationTest.java
@@ -62,7 +62,7 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface A01 {
 		@RemoteMethod(path="a") String getA01(@Query("x") int b);
 		@RemoteMethod(path="a") String getA02(@Query("x") float b);
@@ -86,7 +86,7 @@ public class QueryAnnotationTest {
 		@RemoteMethod(path="a") String getA09b(@Query NameValuePairs b);
 	}
 
-	private static A01 a01 = MockRemoteResource.build(A01.class, A.class, null);
+	private static A01 a01 = MockRemote.build(A01.class, A.class, null);
 
 	@Test
 	public void a01_int() throws Exception {
@@ -181,7 +181,7 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface BR {
 		@RemoteMethod(path="/") String getB01(@Query(name="x",_default="foo") String b);
 		@RemoteMethod(path="/") String getB02(@Query(name="x",_default="foo",allowEmptyValue=true) String b);
@@ -189,7 +189,7 @@ public class QueryAnnotationTest {
 		@RemoteMethod(path="/") String getB04(@Query(name="x",_default="",allowEmptyValue=true) String b);
 	}
 
-	private static BR br = MockRemoteResource.build(BR.class, B.class, null);
+	private static BR br = MockRemote.build(BR.class, B.class, null);
 
 	@Test
 	public void b01a_default() throws Exception {
@@ -248,7 +248,7 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface CR {
 		@RemoteMethod(path="/a") String getC01a(@Query(name="x") String...b);
 		@RemoteMethod(path="/b") String getC01b(@Query(name="x") String...b);
@@ -266,7 +266,7 @@ public class QueryAnnotationTest {
 		@RemoteMethod(path="/b") String getC07b(@Query(name="x",collectionFormat="uon") String...b);
 	}
 
-	private static CR cr = MockRemoteResource.build(CR.class, C.class, null);
+	private static CR cr = MockRemote.build(CR.class, C.class, null);
 
 	@Test
 	public void c01a_default() throws Exception {
@@ -339,7 +339,7 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface DR {
 		@RemoteMethod(path="/") String getC01a(@Query(name="x",minimum="1",maximum="10") int b);
 		@RemoteMethod(path="/") String getC01b(@Query(name="x",minimum="1",maximum="10",exclusiveMinimum=false,exclusiveMaximum=false) int b);
@@ -385,7 +385,7 @@ public class QueryAnnotationTest {
 		@RemoteMethod(path="/") String getC16c(@Query(name="x",minimum="1",maximum="10",exclusiveMinimum=true,exclusiveMaximum=true) Byte b);
 	}
 
-	private static DR dr = MockRemoteResource.build(DR.class, D.class, null);
+	private static DR dr = MockRemote.build(DR.class, D.class, null);
 
 	@Test
 	public void d01a_int_defaultExclusive() throws Exception {
@@ -712,7 +712,7 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface ER {
 		@RemoteMethod(path="/") String getE01(@Query(name="x",collectionFormat="pipes",minItems=1,maxItems=2) String...b);
 		@RemoteMethod(path="/") String getE02(@Query(name="x",items=@Items(collectionFormat="pipes",minItems=1,maxItems=2)) String[]...b);
@@ -722,7 +722,7 @@ public class QueryAnnotationTest {
 		@RemoteMethod(path="/") String getE06(@Query(name="x",items=@Items(collectionFormat="pipes",uniqueItems=true)) String[]...b);
 	}
 
-	private static ER er = MockRemoteResource.build(ER.class, E.class, null);
+	private static ER er = MockRemote.build(ER.class, E.class, null);
 
 	@Test
 	public void e01_minMax() throws Exception {
@@ -771,7 +771,7 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface FR {
 		@RemoteMethod(path="/") String getF01(@Query(name="x",minLength=2,maxLength=3) String b);
 		@RemoteMethod(path="/") String getF02(@Query(name="x",collectionFormat="pipes",items=@Items(minLength=2,maxLength=3)) String...b);
@@ -781,7 +781,7 @@ public class QueryAnnotationTest {
 		@RemoteMethod(path="/") String getF06(@Query(name="x",collectionFormat="pipes",items=@Items(pattern="foo\\d{1,3}")) String...b);
 	}
 
-	private static FR fr = MockRemoteResource.build(FR.class, F.class, null);
+	private static FR fr = MockRemote.build(FR.class, F.class, null);
 
 	@Test
 	public void f01_minMaxLength() throws Exception {
@@ -836,7 +836,7 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface GR {
 		@RemoteMethod(path="/") String getG01(@Query(name="x",multipleOf="2") int b);
 		@RemoteMethod(path="/") String getG02(@Query(name="x",multipleOf="2") short b);
@@ -854,7 +854,7 @@ public class QueryAnnotationTest {
 		@RemoteMethod(path="/") String getG16(@Query(name="x",multipleOf="2") Byte b);
 	}
 
-	private static GR gr = MockRemoteResource.build(GR.class, G.class, null);
+	private static GR gr = MockRemote.build(GR.class, G.class, null);
 
 	@Test
 	public void g01_multipleOf_int() throws Exception {
@@ -939,14 +939,14 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface HR {
 		@RemoteMethod(path="/") String getH01(@Query(name="x") String b);
 		@RemoteMethod(path="/") String getH02(@Query(name="x",required=false) String b);
 		@RemoteMethod(path="/") String getH03(@Query(name="x",required=true) String b);
 	}
 
-	private static HR hr = MockRemoteResource.build(HR.class, H.class, null);
+	private static HR hr = MockRemote.build(HR.class, H.class, null);
 
 	@Test
 	public void h01_required_default() throws Exception {
@@ -974,14 +974,14 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface IR {
 		@RemoteMethod(path="/") String getI01(@Query(name="x",allowEmptyValue=true) String b);
 		@RemoteMethod(path="/") String getI02(@Query(name="x",allowEmptyValue=true,skipIfEmpty=false) String b);
 		@RemoteMethod(path="/") String getI03(@Query(name="x",skipIfEmpty=true) String b);
 	}
 
-	private static IR ir = MockRemoteResource.build(IR.class, I.class, null);
+	private static IR ir = MockRemote.build(IR.class, I.class, null);
 
 	@Test
 	public void h01_skipIfEmpty_default() throws Exception {
@@ -1008,12 +1008,12 @@ public class QueryAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface JR {
 		@RemoteMethod(path="/") String getJ01(@Query(name="x",serializer=XPartSerializer.class) String b);
 	}
 
-	private static JR jr = MockRemoteResource.build(JR.class, J.class, null);
+	private static JR jr = MockRemote.build(JR.class, J.class, null);
 
 	@Test
 	public void j01_serializer() throws Exception {
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteMethodAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteMethodAnnotationTest.java
index 5e0179e..66522f4 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteMethodAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteMethodAnnotationTest.java
@@ -62,7 +62,7 @@ public class RemoteMethodAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface A01 {
 		public String doGet();
 		public String doGET();
@@ -73,7 +73,7 @@ public class RemoteMethodAnnotationTest {
 
 	@Test
 	public void a01_inferredMethodsAndPaths() throws Exception {
-		A01 t = MockRemoteResource.build(A01.class, A.class, null);
+		A01 t = MockRemote.build(A01.class, A.class, null);
 		assertEquals("foo", t.doGet());
 		assertEquals("foo", t.doGET());
 		assertEquals("qux", t.doFoo());
@@ -110,7 +110,7 @@ public class RemoteMethodAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface B01 {
 		public void b01();
 
@@ -122,7 +122,7 @@ public class RemoteMethodAnnotationTest {
 
 	@Test
 	public void b01_returnTypes() throws Exception {
-		B01 t = MockRemoteResource.build(B01.class, B.class, null);
+		B01 t = MockRemote.build(B01.class, B.class, null);
 		t.b01();
 		assertEquals("foo", t.b02());
 		assertEquals("bar", IOUtils.read(t.b02a().getEntity().getContent()));
@@ -143,7 +143,7 @@ public class RemoteMethodAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface C01 {
 
 		@RemoteMethod(method="POST",path="c01")
@@ -161,7 +161,7 @@ public class RemoteMethodAnnotationTest {
 
 	@Test
 	public void c01_returnTypes_json() throws Exception {
-		C01 t = MockRemoteResource.build(C01.class, C.class, Json.DEFAULT);
+		C01 t = MockRemote.build(C01.class, C.class, Json.DEFAULT);
 		assertEquals("foo", t.c01a("foo"));
 		assertEquals("'foo'", IOUtils.read(t.c01b("foo").getEntity().getContent()));
 		assertEquals("'foo'", IOUtils.read(t.c01c("foo")));
@@ -182,7 +182,7 @@ public class RemoteMethodAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface D01 {
 
 		@RemoteMethod(method="POST",path="d01")
@@ -200,7 +200,7 @@ public class RemoteMethodAnnotationTest {
 
 	@Test
 	public void d01_returnTypes_partSerialization() throws Exception {
-		D01 t = MockRemoteResource.build(D01.class, D.class, OpenApi.DEFAULT);
+		D01 t = MockRemote.build(D01.class, D.class, OpenApi.DEFAULT);
 		assertEquals("foo", t.d01a("foo"));
 		assertEquals("foo", IOUtils.read(t.d01b("foo").getEntity().getContent()));
 		assertEquals("foo", IOUtils.read(t.d01c("foo")));
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteResourceAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteResourceAnnotationTest.java
index 390ae0b..21c1c92 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteResourceAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RemoteResourceAnnotationTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.http.remote.*;
 import org.apache.juneau.rest.mock2.*;
-import org.apache.juneau.rest.mock2.MockRemoteResource;
+import org.apache.juneau.rest.mock2.MockRemote;
 import org.junit.*;
 import org.junit.runners.*;
 
@@ -50,7 +50,7 @@ public class RemoteResourceAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface A01a {
 		@RemoteMethod
 		public String a01();
@@ -62,13 +62,13 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void a01_noPath() throws Exception {
-		A01a t = MockRemoteResource.build(A01a.class, A.class, null);
+		A01a t = MockRemote.build(A01a.class, A.class, null);
 		assertEquals("foo", t.a01());
 		assertEquals("foo", t.a01a());
 		assertEquals("foo", t.a01b());
 	}
 
-	@RemoteResource(path="A")
+	@Remote(path="A")
 	public static interface A02a {
 		@RemoteMethod
 		public String a02();
@@ -80,13 +80,13 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void a02a_normalPath() throws Exception {
-		A02a t = MockRemoteResource.build(A02a.class, A.class, null);
+		A02a t = MockRemote.build(A02a.class, A.class, null);
 		assertEquals("foo", t.a02());
 		assertEquals("foo", t.a02a());
 		assertEquals("foo", t.a02b());
 	}
 
-	@RemoteResource(path="/A/")
+	@Remote(path="/A/")
 	public static interface A02b {
 		@RemoteMethod
 		public String a02();
@@ -98,13 +98,13 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void a02b_normalPathWithSlashes() throws Exception {
-		A02b t = MockRemoteResource.build(A02b.class, A.class, null);
+		A02b t = MockRemote.build(A02b.class, A.class, null);
 		assertEquals("foo", t.a02());
 		assertEquals("foo", t.a02a());
 		assertEquals("foo", t.a02b());
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface A02c {
 		@RemoteMethod
 		public String a02();
@@ -117,14 +117,14 @@ public class RemoteResourceAnnotationTest {
 	@Test
 	public void a02c_pathOnClient() throws Exception {
 		try (RestClient rc = MockRestClient.create(A.class, null).rootUrl("http://localhost/A").build()) {
-			A02c t = rc.getRemoteResource(A02c.class);
+			A02c t = rc.getRemote(A02c.class);
 			assertEquals("foo", t.a02());
 			assertEquals("foo", t.a02a());
 			assertEquals("foo", t.a02b());
 		}
 	}
 
-	@RemoteResource(path="A/A")
+	@Remote(path="A/A")
 	public static interface A03a {
 		@RemoteMethod
 		public String a03();
@@ -136,13 +136,13 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void a03a_normalPath() throws Exception {
-		A03a t = MockRemoteResource.build(A03a.class, A.class, null);
+		A03a t = MockRemote.build(A03a.class, A.class, null);
 		assertEquals("foo", t.a03());
 		assertEquals("foo", t.a03a());
 		assertEquals("foo", t.a03b());
 	}
 
-	@RemoteResource(path="/A/A/")
+	@Remote(path="/A/A/")
 	public static interface A03b {
 		@RemoteMethod
 		public String a03();
@@ -154,13 +154,13 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void a03b_normalPathWithSlashes() throws Exception {
-		A03b t = MockRemoteResource.build(A03b.class, A.class, null);
+		A03b t = MockRemote.build(A03b.class, A.class, null);
 		assertEquals("foo", t.a03());
 		assertEquals("foo", t.a03a());
 		assertEquals("foo", t.a03b());
 	}
 
-	@RemoteResource(path="A")
+	@Remote(path="A")
 	public static interface A03c {
 		@RemoteMethod
 		public String a03();
@@ -173,14 +173,14 @@ public class RemoteResourceAnnotationTest {
 	@Test
 	public void a03c_partialPath() throws Exception {
 		try (RestClient rc = MockRestClient.create(A.class, null).rootUrl("http://localhost/A").build()) {
-			A03c t = rc.getRemoteResource(A03c.class);
+			A03c t = rc.getRemote(A03c.class);
 			assertEquals("foo", t.a03());
 			assertEquals("foo", t.a03a());
 			assertEquals("foo", t.a03b());
 		}
 	}
 
-	@RemoteResource(path="/A/")
+	@Remote(path="/A/")
 	public static interface A03d {
 		@RemoteMethod
 		public String a03();
@@ -193,7 +193,7 @@ public class RemoteResourceAnnotationTest {
 	@Test
 	public void a03d_partialPathExtraSlashes() throws Exception {
 		try (RestClient rc = MockRestClient.create(A.class, null).rootUrl("http://localhost/A/").build()) {
-			A03d t = rc.getRemoteResource(A03d.class);
+			A03d t = rc.getRemote(A03d.class);
 			assertEquals("foo", t.a03());
 			assertEquals("foo", t.a03a());
 			assertEquals("foo", t.a03b());
@@ -224,7 +224,7 @@ public class RemoteResourceAnnotationTest {
 	}
 	private static RestClient rb = MockRestClient.create(B.class, null).rootUrl("http://localhost/B").build();
 
-	@RemoteResource
+	@Remote
 	public static interface B01 {
 		@RemoteMethod
 		public String b01();
@@ -236,13 +236,13 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void b01_noPath() throws Exception {
-		B01 t = rb.getRemoteResource(B01.class);
+		B01 t = rb.getRemote(B01.class);
 		assertEquals("foo", t.b01());
 		assertEquals("foo", t.b01a());
 		assertEquals("foo", t.b01b());
 	}
 
-	@RemoteResource(path="http://localhost/B")
+	@Remote(path="http://localhost/B")
 	public static interface B02 {
 		@RemoteMethod
 		public String b01();
@@ -254,13 +254,13 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void b02_absolutePathOnClass() throws Exception {
-		B02 t = rb.getRemoteResource(B02.class);
+		B02 t = rb.getRemote(B02.class);
 		assertEquals("foo", t.b01());
 		assertEquals("foo", t.b01a());
 		assertEquals("foo", t.b01b());
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface B03 {
 		@RemoteMethod
 		public String b01();
@@ -272,7 +272,7 @@ public class RemoteResourceAnnotationTest {
 
 	@Test
 	public void b03_absolutePathsOnMethods() throws Exception {
-		B03 t = rb.getRemoteResource(B03.class);
+		B03 t = rb.getRemote(B03.class);
 		assertEquals("foo", t.b01());
 		assertEquals("foo", t.b01a());
 		assertEquals("foo", t.b01b());
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RequestAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RequestAnnotationTest.java
index b631a42..7ae06ec 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RequestAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RequestAnnotationTest.java
@@ -72,12 +72,12 @@ public class RequestAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface AR {
 		@RemoteMethod(path="/{x}") String post(ARequest req);
 	}
 
-	private static AR ar = MockRemoteResource.build(AR.class, A.class, null);
+	private static AR ar = MockRemote.build(AR.class, A.class, null);
 
 	@Test
 	public void a01_basic() throws Exception {
@@ -136,12 +136,12 @@ public class RequestAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface BR {
 		@RemoteMethod(path="/{x}") String post(BRequest req);
 	}
 
-	private static BR br = MockRemoteResource.build(BR.class, B.class, null);
+	private static BR br = MockRemote.build(BR.class, B.class, null);
 
 	@Test
 	public void b01_annotationOnParent() throws Exception {
@@ -200,12 +200,12 @@ public class RequestAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface CR {
 		@RemoteMethod(path="/{x}") String post(CRequest req);
 	}
 
-	private static CR cr = MockRemoteResource.build(CR.class, C.class, null);
+	private static CR cr = MockRemote.build(CR.class, C.class, null);
 
 	@Test
 	public void c01_annotationOnInterface() throws Exception {
@@ -252,12 +252,12 @@ public class RequestAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface DR {
 		@RemoteMethod(path="/{x}") String post(@Request DRequest req);
 	}
 
-	private static DR dr = MockRemoteResource.build(DR.class, D.class, null);
+	private static DR dr = MockRemote.build(DR.class, D.class, null);
 
 	@Test
 	public void d01_annotationOnParameter() throws Exception {
@@ -305,12 +305,12 @@ public class RequestAnnotationTest {
 		}
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface ER {
 		@RemoteMethod(path="/{x}") String post(ERequest req);
 	}
 
-	private static ER er = MockRemoteResource.build(ER.class, E.class, null);
+	private static ER er = MockRemote.build(ER.class, E.class, null);
 
 	@Test
 	public void e01_partSerializer() throws Exception {
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/ResponseAnnotationTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/ResponseAnnotationTest.java
index c4deb8a..28d8767 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/ResponseAnnotationTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/ResponseAnnotationTest.java
@@ -69,12 +69,12 @@ public class ResponseAnnotationTest {
 		int getStatus();
 	}
 
-	@RemoteResource
+	@Remote
 	public static interface AR {
 		@RemoteMethod AResponse get();
 	}
 
-	private static AR ar = MockRemoteResource.build(AR.class, A.class, null);
+	private static AR ar = MockRemote.build(AR.class, A.class, null);
 
 	@Test
 	public void a01_basic() throws Exception {
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 60d52d8..dfbc5c4 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -34,7 +34,7 @@ import org.apache.http.impl.client.*;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.http.remote.RemoteReturn;
-import org.apache.juneau.http.remote.RemoteResource;
+import org.apache.juneau.http.remote.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.httppart.bean.*;
 import org.apache.juneau.internal.*;
@@ -1003,7 +1003,7 @@ public class RestClient extends BeanContext implements Closeable {
 	 * <p>
 	 * The URL to the REST interface is based on the following values:
 	 * <ul>
-	 * 	<li>The {@link RemoteResource#path() @RemoteResource(path)} annotation on the interface (<c>remote-path</c>).
+	 * 	<li>The {@link Remote#path() @Remote(path)} annotation on the interface (<c>remote-path</c>).
 	 * 	<li>The {@link RestClientBuilder#rootUrl(Object) rootUrl} on the client (<c>root-url</c>).
 	 * 	<li>The fully-qualified class name of the interface (<c>class-name</c>).
 	 * </ul>
@@ -1063,23 +1063,23 @@ public class RestClient extends BeanContext implements Closeable {
 	 * @return The new proxy interface.
 	 * @throws RemoteMetadataException If the REST URI cannot be determined based on the information given.
 	 */
-	public <T> T getRemoteResource(final Class<T> interfaceClass) {
-		return getRemoteResource(interfaceClass, null);
+	public <T> T getRemote(final Class<T> interfaceClass) {
+		return getRemote(interfaceClass, null);
 	}
 
 	/**
-	 * Same as {@link #getRemoteResource(Class)} except explicitly specifies the URL of the REST interface.
+	 * Same as {@link #getRemote(Class)} except explicitly specifies the URL of the REST interface.
 	 *
 	 * @param interfaceClass The interface to create a proxy for.
 	 * @param restUrl The URL of the REST interface.
 	 * @return The new proxy interface.
 	 */
-	public <T> T getRemoteResource(final Class<T> interfaceClass, final Object restUrl) {
-		return getRemoteResource(interfaceClass, restUrl, serializer, parser);
+	public <T> T getRemote(final Class<T> interfaceClass, final Object restUrl) {
+		return getRemote(interfaceClass, restUrl, serializer, parser);
 	}
 
 	/**
-	 * Same as {@link #getRemoteResource(Class, Object)} but allows you to override the serializer and parser used.
+	 * Same as {@link #getRemote(Class, Object)} but allows you to override the serializer and parser used.
 	 *
 	 * @param interfaceClass The interface to create a proxy for.
 	 * @param restUrl The URL of the REST interface.
@@ -1088,7 +1088,7 @@ public class RestClient extends BeanContext implements Closeable {
 	 * @return The new proxy interface.
 	 */
 	@SuppressWarnings({ "unchecked" })
-	public <T> T getRemoteResource(final Class<T> interfaceClass, Object restUrl, final Serializer serializer, final Parser parser) {
+	public <T> T getRemote(final Class<T> interfaceClass, Object restUrl, final Serializer serializer, final Parser parser) {
 
 		if (restUrl == null)
 			restUrl = rootUrl;
@@ -1101,7 +1101,7 @@ public class RestClient extends BeanContext implements Closeable {
 				new Class[] { interfaceClass },
 				new InvocationHandler() {
 
-					final RemoteResourceMeta rm = new RemoteResourceMeta(interfaceClass);
+					final RemoteMeta rm = new RemoteMeta(interfaceClass);
 
 					@Override /* InvocationHandler */
 					public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
@@ -1212,6 +1212,24 @@ public class RestClient extends BeanContext implements Closeable {
 		}
 	}
 
+	@SuppressWarnings("javadoc")
+	@Deprecated
+	public <T> T getRemoteResource(final Class<T> interfaceClass) {
+		return getRemote(interfaceClass, null);
+	}
+
+	@SuppressWarnings("javadoc")
+	@Deprecated
+	public <T> T getRemoteResource(final Class<T> interfaceClass, final Object restUrl) {
+		return getRemote(interfaceClass, null);
+	}
+
+	@SuppressWarnings("javadoc")
+	@Deprecated
+	public <T> T getRemoteResource(final Class<T> interfaceClass, Object restUrl, final Serializer serializer, final Parser parser) {
+		return getRemote(interfaceClass, null);
+	}
+
 	/**
 	 * Create a new Remote Interface against a {@link RemoteInterface @RemoteInterface}-annotated class.
 	 *
@@ -1222,7 +1240,7 @@ public class RestClient extends BeanContext implements Closeable {
 	 * <p>
 	 * The URL to the REST interface is based on the following values:
 	 * <ul>
-	 * 	<li>The {@link RemoteResource#path() @RemoteResource(path)} annotation on the interface (<c>remote-path</c>).
+	 * 	<li>The {@link Remote#path() @Remote(path)} annotation on the interface (<c>remote-path</c>).
 	 * 	<li>The {@link RestClientBuilder#rootUrl(Object) rootUrl} on the client (<c>root-url</c>).
 	 * 	<li>The fully-qualified class name of the interface (<c>class-name</c>).
 	 * </ul>
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteResourceMeta.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java
similarity index 89%
rename from juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteResourceMeta.java
rename to juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java
index dcfef03..ad59ca7 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteResourceMeta.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java
@@ -17,20 +17,21 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.lang.reflect.*;
 import java.util.*;
 
+import org.apache.juneau.http.remote.*;
 import org.apache.juneau.reflect.*;
 
 /**
  * Contains the meta-data about a REST proxy class.
  *
  * <p>
- * Captures the information in {@link org.apache.juneau.http.remote.RemoteResource @RemoteResource} and {@link org.apache.juneau.http.remote.RemoteMethod @RemoteMethod} annotations for
+ * Captures the information in {@link org.apache.juneau.http.remote.Remote @Remote} and {@link org.apache.juneau.http.remote.RemoteMethod @RemoteMethod} annotations for
  * caching and reuse.
  *
  * <ul class='seealso'>
  * 	<li class='link'>{@doc juneau-rest-client.RestProxies}
  * </ul>
  */
-public class RemoteResourceMeta {
+public class RemoteMeta {
 
 	private final Map<Method,RemoteMethodMeta> methods;
 	private final String path;
@@ -38,10 +39,10 @@ public class RemoteResourceMeta {
 	/**
 	 * Constructor.
 	 *
-	 * @param c The interface class annotated with a {@link org.apache.juneau.http.remote.RemoteResource @RemoteResource} annotation (optional).
+	 * @param c The interface class annotated with a {@link org.apache.juneau.http.remote.Remote @Remote} annotation (optional).
 	 */
 	@SuppressWarnings("deprecation")
-	public RemoteResourceMeta(Class<?> c) {
+	public RemoteMeta(Class<?> c) {
 		String path = "";
 
 		ClassInfo ci = ClassInfo.of(c);
@@ -51,6 +52,9 @@ public class RemoteResourceMeta {
 		for (org.apache.juneau.http.remote.RemoteResource r : ci.getAnnotationsParentFirst(org.apache.juneau.http.remote.RemoteResource.class))
 			if (! r.path().isEmpty())
 				path = trimSlashes(r.path());
+		for (Remote r : ci.getAnnotationsParentFirst(Remote.class))
+			if (! r.path().isEmpty())
+				path = trimSlashes(r.path());
 
 		Map<Method,RemoteMethodMeta> methods = new LinkedHashMap<>();
 		for (MethodInfo m : ci.getPublicMethods())
diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRemoteResource.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRemote.java
similarity index 85%
rename from juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRemoteResource.java
rename to juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRemote.java
index d5d33d2..c5c73e6 100644
--- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRemoteResource.java
+++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRemote.java
@@ -26,12 +26,12 @@ import org.apache.juneau.serializer.*;
  * Creates a mocked interface against a REST resource class to use for creating test remote resource interfaces.
  *
  * <ul class='seealso'>
- * 	<li class='link'>{@doc juneau-rest-mock.MockRemoteResource}
+ * 	<li class='link'>{@doc juneau-rest-mock.MockRemote}
  * </ul>
  *
  * @param <T> The interface class.
  */
-public class MockRemoteResource<T> {
+public class MockRemote<T> {
 
 	private MockRest.Builder mrb;
 	private RestClientBuilder rcb = RestClient.create().json();
@@ -41,12 +41,12 @@ public class MockRemoteResource<T> {
 	 * Constructor.
 	 *
 	 * @param intf
-	 * 	The remote interface annotated with {@link RemoteResource @RemoteResource}.
+	 * 	The remote interface annotated with {@link Remote @Remote}.
 	 * @param impl
 	 * 	The REST implementation bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
 	 */
-	protected MockRemoteResource(Class<T> intf, Object impl) {
+	protected MockRemote(Class<T> intf, Object impl) {
 		this.intf = intf;
 		mrb = MockRest.create(impl);
 	}
@@ -59,14 +59,14 @@ public class MockRemoteResource<T> {
 	 *
 	 *
 	 * @param intf
-	 * 	The remote interface annotated with {@link RemoteResource @RemoteResource}.
+	 * 	The remote interface annotated with {@link Remote @Remote}.
 	 * @param impl
 	 * 	The REST implementation bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
 	 * @return A new builder.
 	 */
-	public static <T> MockRemoteResource<T> create(Class<T> intf, Object impl) {
-		return new MockRemoteResource<>(intf, impl);
+	public static <T> MockRemote<T> create(Class<T> intf, Object impl) {
+		return new MockRemote<>(intf, impl);
 	}
 
 	/**
@@ -76,7 +76,7 @@ public class MockRemoteResource<T> {
 	 * Uses the serializer and parser defined on the specified marshall for serializing and parsing by default.
 	 *
 	 * @param intf
-	 * 	The remote interface annotated with {@link RemoteResource @RemoteResource}.
+	 * 	The remote interface annotated with {@link Remote @Remote}.
 	 * @param impl
 	 * 	The REST implementation bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
@@ -84,8 +84,8 @@ public class MockRemoteResource<T> {
 	 * 	The marshall to use for serializing and parsing the HTTP bodies.
 	 * @return A new builder.
 	 */
-	public static <T> MockRemoteResource<T> create(Class<T> intf, Object impl, Marshall m) {
-		return new MockRemoteResource<>(intf, impl).marshall(m);
+	public static <T> MockRemote<T> create(Class<T> intf, Object impl, Marshall m) {
+		return new MockRemote<>(intf, impl).marshall(m);
 	}
 
 	/**
@@ -95,7 +95,7 @@ public class MockRemoteResource<T> {
 	 * Uses the serializer and parser defined on the specified marshall for serializing and parsing by default.
 	 *
 	 * @param intf
-	 * 	The remote interface annotated with {@link RemoteResource @RemoteResource}.
+	 * 	The remote interface annotated with {@link Remote @Remote}.
 	 * @param impl
 	 * 	The REST implementation bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
@@ -107,8 +107,8 @@ public class MockRemoteResource<T> {
 	 * 	<br>Can be <jk>null</jk> to force no parser to be used and no <c>Accept</c> header.
 	 * @return A new builder.
 	 */
-	public static <T> MockRemoteResource<T> create(Class<T> intf, Object impl, Serializer s, Parser p) {
-		return new MockRemoteResource<>(intf, impl).serializer(s).parser(p);
+	public static <T> MockRemote<T> create(Class<T> intf, Object impl, Serializer s, Parser p) {
+		return new MockRemote<>(intf, impl).serializer(s).parser(p);
 	}
 
 	/**
@@ -118,7 +118,7 @@ public class MockRemoteResource<T> {
 	 */
 	public T build() {
 		MockRest mr = mrb.build();
-		return rcb.httpClientConnectionManager(new MockHttpClientConnectionManager(mr)).rootUrl("http://localhost").headers(mr.getHeaders()).build().getRemoteResource(intf);
+		return rcb.httpClientConnectionManager(new MockHttpClientConnectionManager(mr)).rootUrl("http://localhost").headers(mr.getHeaders()).build().getRemote(intf);
 	}
 
 	/**
@@ -134,7 +134,7 @@ public class MockRemoteResource<T> {
 	 * </p>
 	 *
 	 * @param intf
-	 * 	The remote interface annotated with {@link RemoteResource @RemoteResource}.
+	 * 	The remote interface annotated with {@link Remote @Remote}.
 	 * @param impl
 	 * 	The REST implementation bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
@@ -157,7 +157,7 @@ public class MockRemoteResource<T> {
 	 * </p>
 	 *
 	 * @param intf
-	 * 	The remote interface annotated with {@link RemoteResource @RemoteResource}.
+	 * 	The remote interface annotated with {@link Remote @Remote}.
 	 * @param impl
 	 * 	The REST implementation bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
@@ -183,7 +183,7 @@ public class MockRemoteResource<T> {
 	 * </p>
 	 *
 	 * @param intf
-	 * 	The remote interface annotated with {@link RemoteResource @RemoteResource}.
+	 * 	The remote interface annotated with {@link Remote @Remote}.
 	 * @param impl
 	 * 	The REST implementation bean or bean class annotated with {@link Rest @Rest}.
 	 * 	<br>If a class, it must have a no-arg constructor.
@@ -204,7 +204,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> debug() {
+	public MockRemote<T> debug() {
 		mrb.debug();
 		rcb.debug();
 		return this;
@@ -219,7 +219,7 @@ public class MockRemoteResource<T> {
 	 * 	<br>Can be <jk>null</jk> (will be skipped).
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> header(String name, Object value) {
+	public MockRemote<T> header(String name, Object value) {
 		mrb.header(name, value);
 		rcb.header(name, value);
 		return this;
@@ -234,7 +234,7 @@ public class MockRemoteResource<T> {
 	 * 	<br><jk>null</jk> null map values will be ignored.
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> headers(Map<String,Object> value) {
+	public MockRemote<T> headers(Map<String,Object> value) {
 		mrb.headers(value);
 		rcb.headers(value);
 		return this;
@@ -246,7 +246,7 @@ public class MockRemoteResource<T> {
 	 * @param value The <c>Accept</c> header value.
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> accept(String value) {
+	public MockRemote<T> accept(String value) {
 		mrb.accept(value);
 		rcb.accept(value);
 		return this;
@@ -258,7 +258,7 @@ public class MockRemoteResource<T> {
 	 * @param value The <c>Content-Type</c> header value.
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> contentType(String value) {
+	public MockRemote<T> contentType(String value) {
 		mrb.contentType(value);
 		rcb.contentType(value);
 		return this;
@@ -269,7 +269,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> json() {
+	public MockRemote<T> json() {
 		marshall(Json.DEFAULT);
 		return this;
 	}
@@ -279,7 +279,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> simpleJson() {
+	public MockRemote<T> simpleJson() {
 		marshall(SimpleJson.DEFAULT);
 		return this;
 	}
@@ -289,7 +289,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> xml() {
+	public MockRemote<T> xml() {
 		marshall(Xml.DEFAULT);
 		return this;
 	}
@@ -299,7 +299,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> html() {
+	public MockRemote<T> html() {
 		marshall(Html.DEFAULT);
 		return this;
 	}
@@ -309,7 +309,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> plainText() {
+	public MockRemote<T> plainText() {
 		marshall(PlainText.DEFAULT);
 		return this;
 	}
@@ -319,7 +319,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> msgpack() {
+	public MockRemote<T> msgpack() {
 		marshall(MsgPack.DEFAULT);
 		return this;
 	}
@@ -329,7 +329,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> uon() {
+	public MockRemote<T> uon() {
 		marshall(Uon.DEFAULT);
 		return this;
 	}
@@ -339,7 +339,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> urlEnc() {
+	public MockRemote<T> urlEnc() {
 		marshall(UrlEncoding.DEFAULT);
 		return this;
 	}
@@ -349,7 +349,7 @@ public class MockRemoteResource<T> {
 	 *
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> openapi() {
+	public MockRemote<T> openapi() {
 		marshall(OpenApi.DEFAULT);
 		return this;
 	}
@@ -366,7 +366,7 @@ public class MockRemoteResource<T> {
 	 * 	<br>Can be <jk>null</jk> (will remote the existing serializer/parser).
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> marshall(Marshall value) {
+	public MockRemote<T> marshall(Marshall value) {
 		if (value != null)
 			serializer(value.getSerializer()).parser(value.getParser());
 		else
@@ -382,7 +382,7 @@ public class MockRemoteResource<T> {
 	 * 	<br>Can be <jk>null</jk> (will remote the existing serializer).
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> serializer(Serializer value) {
+	public MockRemote<T> serializer(Serializer value) {
 		rcb.serializer(value);
 		contentType(value == null ? null : value.getPrimaryMediaType().toString());
 		return this;
@@ -396,7 +396,7 @@ public class MockRemoteResource<T> {
 	 * 	<br>Can be <jk>null</jk> (will remote the existing parser).
 	 * @return This object (for method chaining).
 	 */
-	public MockRemoteResource<T> parser(Parser value) {
+	public MockRemote<T> parser(Parser value) {
 		rcb.parser(value);
 		accept(value == null ? null : value.getPrimaryMediaType().toString());
 		return this;