http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/236aea45/content/site/apidocs/org/apache/juneau/xml/XmlParserSession.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/xml/XmlParserSession.html 
b/content/site/apidocs/org/apache/juneau/xml/XmlParserSession.html
index a8365b1..212b655 100644
--- a/content/site/apidocs/org/apache/juneau/xml/XmlParserSession.html
+++ b/content/site/apidocs/org/apache/juneau/xml/XmlParserSession.html
@@ -276,7 +276,7 @@ extends <a 
href="../../../../org/apache/juneau/parser/ParserSession.html" title=
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.juneau.<a 
href="../../../../org/apache/juneau/BeanSession.html" title="class in 
org.apache.juneau">BeanSession</a></h3>
-<code><a 
href="../../../../org/apache/juneau/BeanSession.html#Z:Z_class--">_class</a>, 
<a href="../../../../org/apache/juneau/BeanSession.html#asMap--">asMap</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanMeta-java.lang.Class-">getBeanMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanRegistry--">getBeanRegistry</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanTypePropertyName--
 ">getBeanTypePropertyName</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassLoader--">getClassLoader</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.Class-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.reflect.Type-java.lang.reflect.Type...-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetaForObject-T-">getClassMetaForObject</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetas-java.lang.Class:A-">getClassMetas</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getLocale--">getLocale</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getMediaType--">getMediaType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getStringBuilder--">getStringBuilder</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getTimeZone--">getTimeZone</a>,
 <a href="../../../../org/apache/juneau/BeanSession.
 html#isBean-java.lang.Class-">isBean</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isBean-java.lang.Object-">isBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#isDebug--">isDebug</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isIgnoreUnknownBeanProperties--">isIgnoreUnknownBeanProperties</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Object-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Class-">newBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Object-java.lang.Class-">newBeanMap</a>,
 <a href="../../../../org/apache/juneau/BeanSession.html#object--">object</a>, 
<a 
href="../../../../org/apache/juneau/BeanSession.html#returnStringBuilder-java.lang.StringBuilder-">returnStringBuilder</a>,
 <a href="../../../../org/a
 pache/juneau/BeanSession.html#string--">string</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#toArray-org.apache.juneau.ClassMeta-java.util.Collection-">toArray</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-">toBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-java.lang.Class-">toBeanMap</a></code></li>
+<code><a 
href="../../../../org/apache/juneau/BeanSession.html#Z:Z_class--">_class</a>, 
<a href="../../../../org/apache/juneau/BeanSession.html#asMap--">asMap</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanMeta-java.lang.Class-">getBeanMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanRegistry--">getBeanRegistry</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanTypePropertyName--
 ">getBeanTypePropertyName</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassLoader--">getClassLoader</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.Class-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.reflect.Type-java.lang.reflect.Type...-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetaForObject-T-">getClassMetaForObject</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetas-java.lang.reflect.Type:A-">getClassMetas</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getLocale--">getLocale</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getMediaType--">getMediaType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getStringBuilder--">getStringBuilder</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getTimeZone--">getTimeZone</a>,
 <a href="../../../../org/apache/juneau/BeanS
 ession.html#isBean-java.lang.Class-">isBean</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isBean-java.lang.Object-">isBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#isDebug--">isDebug</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isIgnoreUnknownBeanProperties--">isIgnoreUnknownBeanProperties</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Object-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Class-">newBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Object-java.lang.Class-">newBeanMap</a>,
 <a href="../../../../org/apache/juneau/BeanSession.html#object--">object</a>, 
<a 
href="../../../../org/apache/juneau/BeanSession.html#returnStringBuilder-java.lang.StringBuilder-">returnStringBuilder</a>,
 <a href="../../../.
 ./org/apache/juneau/BeanSession.html#string--">string</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#toArray-org.apache.juneau.ClassMeta-java.util.Collection-">toArray</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-">toBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-java.lang.Class-">toBeanMap</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a 
name="methods.inherited.from.class.org.apache.juneau.Session">

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/236aea45/content/site/apidocs/org/apache/juneau/xml/XmlSerializerSession.html
----------------------------------------------------------------------
diff --git 
a/content/site/apidocs/org/apache/juneau/xml/XmlSerializerSession.html 
b/content/site/apidocs/org/apache/juneau/xml/XmlSerializerSession.html
index fbbe3ff..1a13190 100644
--- a/content/site/apidocs/org/apache/juneau/xml/XmlSerializerSession.html
+++ b/content/site/apidocs/org/apache/juneau/xml/XmlSerializerSession.html
@@ -263,7 +263,7 @@ extends <a 
href="../../../../org/apache/juneau/serializer/SerializerSession.html
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.juneau.<a 
href="../../../../org/apache/juneau/BeanSession.html" title="class in 
org.apache.juneau">BeanSession</a></h3>
-<code><a 
href="../../../../org/apache/juneau/BeanSession.html#Z:Z_class--">_class</a>, 
<a href="../../../../org/apache/juneau/BeanSession.html#asMap--">asMap</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanMeta-java.lang.Class-">getBeanMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanRegistry--">getBeanRegistry</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanTypePropertyName--
 ">getBeanTypePropertyName</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassLoader--">getClassLoader</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.Class-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.reflect.Type-java.lang.reflect.Type...-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetaForObject-T-">getClassMetaForObject</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetas-java.lang.Class:A-">getClassMetas</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getLocale--">getLocale</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getMediaType--">getMediaType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getStringBuilder--">getStringBuilder</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getTimeZone--">getTimeZone</a>,
 <a href="../../../../org/apache/juneau/BeanSession.
 html#isBean-java.lang.Class-">isBean</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isBean-java.lang.Object-">isBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#isDebug--">isDebug</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isIgnoreUnknownBeanProperties--">isIgnoreUnknownBeanProperties</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Object-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Class-">newBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Object-java.lang.Class-">newBeanMap</a>,
 <a href="../../../../org/apache/juneau/BeanSession.html#object--">object</a>, 
<a 
href="../../../../org/apache/juneau/BeanSession.html#returnStringBuilder-java.lang.StringBuilder-">returnStringBuilder</a>,
 <a href="../../../../org/a
 pache/juneau/BeanSession.html#string--">string</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#toArray-org.apache.juneau.ClassMeta-java.util.Collection-">toArray</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-">toBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-java.lang.Class-">toBeanMap</a></code></li>
+<code><a 
href="../../../../org/apache/juneau/BeanSession.html#Z:Z_class--">_class</a>, 
<a href="../../../../org/apache/juneau/BeanSession.html#asMap--">asMap</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-java.lang.Class-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#convertToType-java.lang.Object-java.lang.Object-org.apache.juneau.ClassMeta-">convertToType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanMeta-java.lang.Class-">getBeanMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanRegistry--">getBeanRegistry</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getBeanTypePropertyName--
 ">getBeanTypePropertyName</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassLoader--">getClassLoader</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.Class-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMeta-java.lang.reflect.Type-java.lang.reflect.Type...-">getClassMeta</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetaForObject-T-">getClassMetaForObject</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getClassMetas-java.lang.reflect.Type:A-">getClassMetas</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getLocale--">getLocale</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getMediaType--">getMediaType</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getStringBuilder--">getStringBuilder</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#getTimeZone--">getTimeZone</a>,
 <a href="../../../../org/apache/juneau/BeanS
 ession.html#isBean-java.lang.Class-">isBean</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isBean-java.lang.Object-">isBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#isDebug--">isDebug</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#isIgnoreUnknownBeanProperties--">isIgnoreUnknownBeanProperties</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBean-java.lang.Object-java.lang.Class-">newBean</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Class-">newBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#newBeanMap-java.lang.Object-java.lang.Class-">newBeanMap</a>,
 <a href="../../../../org/apache/juneau/BeanSession.html#object--">object</a>, 
<a 
href="../../../../org/apache/juneau/BeanSession.html#returnStringBuilder-java.lang.StringBuilder-">returnStringBuilder</a>,
 <a href="../../../.
 ./org/apache/juneau/BeanSession.html#string--">string</a>, <a 
href="../../../../org/apache/juneau/BeanSession.html#toArray-org.apache.juneau.ClassMeta-java.util.Collection-">toArray</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-">toBeanMap</a>,
 <a 
href="../../../../org/apache/juneau/BeanSession.html#toBeanMap-T-java.lang.Class-">toBeanMap</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a 
name="methods.inherited.from.class.org.apache.juneau.Session">

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/236aea45/content/site/apidocs/overview-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-summary.html 
b/content/site/apidocs/overview-summary.html
index fce34b7..bba44fa 100644
--- a/content/site/apidocs/overview-summary.html
+++ b/content/site/apidocs/overview-summary.html
@@ -2592,56 +2592,95 @@
          use and allowing much more flexibility.
    </p>
    <p>
-      Remoteable Services are implemented through a combination of the Server 
and Client libraries.
+      The remote proxy interface API allows you to invoke server-side POJO 
methods on the client side using REST as the communications protocol:
    </p>
-   <ul class='spaced-list'>
-      <li>Proxy interfaces are retrieved using the <a 
href="org/apache/juneau/rest/client/RestClient.html#getRemoteableProxy-java.lang.Class-"><code>RestClient.getRemoteableProxy(Class)</code></a>
 method.
-      <li>The <a 
href="org/apache/juneau/rest/client/RestClientBuilder.html#remoteableServletUri-java.lang.String-"><code>RestClientBuilder.remoteableServletUri(String)</code></a>
 method is used to specify the location
-         of the remoteable services servlet running on the server.
-      <li>The <a 
href="org/apache/juneau/rest/remoteable/RemoteableServlet.html" title="class in 
org.apache.juneau.rest.remoteable"><code>RemoteableServlet</code></a> class is 
a specialized subclass of <a href="org/apache/juneau/rest/RestServlet.html" 
title="class in org.apache.juneau.rest"><code>RestServlet</code></a> that 
provides a full-blown
-         REST interface for calling interfaces remotely. 
-   </ul>
-   <p>
-      In this example, you have the following interface defined that you want 
to call from the client side against
-         a POJO on the server side (i.e. a Remoteable Service):
    <p class='bcode'>
-   <jk>public interface</jk> IAddressBook {
-      Person createPerson(CreatePerson cp) <jk>throws</jk> Exception;
-   }
-   </p>        
+   <jc>// Get an interface proxy.</jc>
+   IAddressBook ab = 
restClient.getRemoteableProxy(IAddressBook.<jk>class</jk>);
+   
+   <jc>// Invoke a method on the server side and get the returned result.</jc>
+   Person p = ab.createPerson(
+      <jk>new</jk> Person(
+         <js>"John Smith"</js>, 
+         <js>"Aug 1, 1999"</js>,
+         <jk>new</jk> Address(<js>"My street"</js>, <js>"My city"</js>, 
<js>"My state"</js>, 12345, <jk>true</jk>)
+      )
+   );
+   </p>
    <p>
-      The client side code for invoking this method is shown below:
+      There are two ways to expose remoteable proxies on the server side:
+   </p>
+   <ol>
+      <li>Extending from <code>RemoteableServlet</code>.
+      <li>Using a <code><ja>@RestMethod</ja>(name=<js>"PROXY"</js>)</code> 
annotation on a Java method.
+   </ol>
+   <p>
+      The <code>RemoteableServlet</code> class is a simple specialized servlet 
with an abstract <code>getServiceMap()</code>
+      method to define the server-side POJOs:
    </p>
    <p class='bcode'>
-   <jc>// Create a RestClient using JSON for serialization, and point to the 
server-side remoteable servlet.</jc>
-   RestClient client = <jk>new</jk> RestClientBuilder()
-      
.remoteableServletUri(<js>"https://localhost:9080/juneau/sample/remoteable";</js>)
-      .build();
+   <ja>@RestResource</ja>(
+      path=<js>"/remote"</js>
+   )
+   <jk>public class</jk> SampleRemoteableServlet <jk>extends</jk> 
RemoteableServlet {
    
-   <jc>// Create a proxy interface.</jc>
-   IAddressBook ab = client.getRemoteableProxy(IAddressBook.<jk>class</jk>);
+      <jc>// Our server-side POJO.</jc>
+      AddressBook <jf>addressBook</jf> = <jk>new</jk> AddressBook();
    
-   <jc>// Invoke a method on the server side and get the returned result.</jc>
-   Person p = ab.createPerson(
-      <jk>new</jk> CreatePerson(<js>"Test Person"</js>,
-         AddressBook.<jsm>toCalendar</jsm>(<js>"Aug 1, 1999"</js>),
-         <jk>new</jk> CreateAddress(<js>"Test street"</js>, <js>"Test 
city"</js>, <js>"Test state"</js>, 12345, <jk>true</jk>))
-   );
+      <ja>@Override</ja> <jc>/* RemoteableServlet */</jc>
+      <jk>protected</jk> Map&lt;Class&lt;?&gt;,Object&gt; getServiceMap() 
<jk>throws</jk> Exception {
+         Map&lt;Class&lt;?&gt;,Object&gt; m = <jk>new</jk> 
LinkedHashMap&lt;Class&lt;?&gt;,Object&gt;();
+   
+         <jc>// In this simplified example, we expose the same POJO service 
under two different interfaces.
+         // One is IAddressBook which only exposes methods defined on that 
interface, and
+         // the other is AddressBook itself which exposes all methods defined 
on the class itself (dangerous!).</jc>
+         m.put(IAddressBook.<jk>class</jk>, <jf>addressBook</jf>);
+         m.put(AddressBook.<jk>class</jk>, <jf>addressBook</jf>);
+         <jk>return</jk> m;
+      }
+   }
    </p>
    <p>
-      The requirements for a method to be callable through a remoteable 
service are:
+      The <code><ja>@RestMethod</ja>(name=<js>"PROXY"</js>)</code> approach is 
easier if you only have a single interface you want to expose.  
+      You simply define a Java method whose return type is an interface, and 
return the implementation of that interface:
+   </p>
+   <p class='bcode'>
+   <jc>// Our exposed proxy object.</jc>
+   <ja>@RestMethod</ja>(name=<js>"PROXY"</js>, 
path=<js>"/addressbookproxy/*"</js>)
+   <jk>public</jk> IAddressBook getProxy() {
+      <jk>return</jk> addressBook;
+   }
    </p>
-   <ul class='spaced-list'>
-      <li>The method must be public.
-      <li>The parameter and return types must be <a 
href='#Core.PojoCategories'>serializable and parsable</a>.
-   </ul>
    <p>
-      One significant feature is that the remoteable services servlet is a 
full-blown REST interface.  
+      In either case, the proxy communications layer is pure REST.   
+      Parameters passed in on the client side are serialized as an HTTP POST, 
parsed on the
+      server side, and then passed to the invocation method.  The returned 
POJO is then marshalled back as an HTTP response.
       Therefore, in cases where the interface classes are not available on the 
client side,
          the same method calls can be made through pure REST calls.  
       This can also aid significantly in debugging, since calls to the 
remoteable service
          can be made directly from a browser with no coding involved.
    </p>
+   <p>
+      The parameters and return types of the Java methods can be any of the 
supported serializable and parsable types in <a class='doclink' 
href='#Core.PojoCategories'>POJO Categories</a>.
+      This ends up being WAY more flexible than other proxy interfaces since 
Juneau can handle so may POJO types out-of-the-box.
+      Most of the time you don't even need to modify your existing Java 
implementation code.
+   </p>
+   <p>
+      The RemoteableServlet class itself shows how sophisticated REST 
interfaces can be built on the Juneau RestServlet
+      API using very little code.  The RemoteableServlet class itself consists 
of only 53 lines of code, yet is
+      a sophisticated discoverable and self-documenting REST interface.  And 
since the remote proxy API is built on top 
+      of REST, it can be debugged using just a browser.
+   </p>
+   <p>
+      The requirements for a method to be callable through a remoteable 
service are:
+   </p>
+   <ul class='spaced-list'>
+      <li>The method must be public.
+      <li>The parameter and return types must be <a 
href='#Core.PojoCategories'>serializable and parsable</a>.
+         Parameterized types are supported.
+      <li>Methods can throw <code>Throwables</code> with public no-arg or 
single-arg-string constructors which will be automatically 
+         recreated on the client side.
+   </ul>
    <h6 class='topic'>Additional Information</h6>
    <ul class='javahierarchy'>
       <li class='p'><a class='doclink' 
href='org/apache/juneau/server/remoteable/package-summary.html#TOC'>org.apache.juneau.rest.remoteable</a>
 - Juneau Remoteable API Javadocs.
@@ -6065,6 +6104,8 @@
             <li>New <a href="org/apache/juneau/svl/vars/SwitchVar.html" 
title="class in org.apache.juneau.svl.vars"><code>$SWITCH</code></a> variable 
for switch block logic.
             <li>Whitespace wasn't being ignored in some cases.
          </ul>
+         <li><a href="org/apache/juneau/html/HtmlParser.html" title="class in 
org.apache.juneau.html"><code>HtmlParser</code></a> can now parse full body 
contents generated by <a href="org/apache/juneau/html/HtmlDocSerializer.html" 
title="class in org.apache.juneau.html"><code>HtmlDocSerializer</code></a>. 
+         <li>Parse-args supported added to <a 
href="org/apache/juneau/msgpack/MsgPackParser.html" title="class in 
org.apache.juneau.msgpack"><code>MsgPackParser</code></a> to allow it to be 
used in remoteable proxies. 
       </ul>
       
       <h6 class='topic'>org.apache.juneau.rest</h6>
@@ -6114,11 +6155,46 @@
          <li><a 
href="org/apache/juneau/rest/annotation/RestResource.html#stylesheet--"><code>RestResource.stylesheet()</code></a>
 can now take in a comma-delimited list of stylesheet paths.
          <li><a href="org/apache/juneau/rest/StreamResource.html" title="class 
in org.apache.juneau.rest"><code>StreamResource</code></a> can now contain 
multiple sources from a variety of source types (e.g. 
<code><jk>byte</jk>[]</code> arrays, <code>InputStreams</code>, 
<code>Files</code>, etc...)
             and is now immutable.  It also includes a new <a 
href="org/apache/juneau/rest/StreamResource.Builder.html" title="class in 
org.apache.juneau.rest"><code>StreamResource.Builder</code></a> class.
+         <li>Simplified remoteable proxies using the 
<code><ja>@RestMethod</ja>(name=<js>"PROXY"</js>)</code> annotation on REST 
methods.
+            Used to expose interface proxies without the need for <a 
href="org/apache/juneau/rest/remoteable/RemoteableServlet.html" title="class in 
org.apache.juneau.rest.remoteable"><code>RemoteableServlet</code></a>.
+         <p class='bcode'>
+   <jc>// Server side</jc>
+   <ja>@RestMethod</ja>(name=<js>"PROXY"</js>, path=<js>"/myproxy/*"</js>)
+   <jk>public</jk> IAddressBook getProxy() {
+      <jk>return</jk> <jf>addressBook</jf>;
+   }
+
+   <jc>// Client side</jc>
+   RestClient client = <jk>new</jk> 
RestClientBuilder().rootUrl(<jf>samplesUrl</jf>).build();         
+   IAddressBook ab = client.getRemoteableProxy(IAddressBook.<jk>class</jk>, 
<js>"/addressBook/myproxy"</js>);
+         </p>
+            See <a 
href="org/apache/juneau/rest/annotation/RestMethod.html#name--"><code>RestMethod.name()</code></a>
 for more information.
+         <li>Updated doc: <a class='doclink' href='#Remoteable'>6 - Remoteable 
Services</a>
+         <li><a 
href="org/apache/juneau/rest/RestRequest.html#toString--"><code>RestRequest.toString()</code></a>
 can be called at any time to view the headers and content of the request
+            without affecting functionality.  Very useful for debugging.
       </ul>
 
       <h6 class='topic'>org.apache.juneau.rest.client</h6>
       <ul class='spaced-list'>
          <li>Revamped the client API to use builders.
+         <li>New methods added to <a 
href="org/apache/juneau/rest/client/RestCall.html" title="class in 
org.apache.juneau.rest.client"><code>RestCall</code></a>:
+         <ul>
+            <li><a 
href="org/apache/juneau/rest/client/RestCall.html#serializer-org.apache.juneau.serializer.Serializer-"><code>RestCall.serializer(Serializer)</code></a>
 - Override the serializer defined on the client for a single call.
+            <li><a 
href="org/apache/juneau/rest/client/RestCall.html#parser-org.apache.juneau.parser.Parser-"><code>RestCall.parser(Parser)</code></a>
 - Override the parser defined on the client for a single call.
+         </ul>
+         <li>New methods added to <a 
href="org/apache/juneau/rest/client/RestClient.html" title="class in 
org.apache.juneau.rest.client"><code>RestClient</code></a>:
+         <ul>
+            <li><a 
href="org/apache/juneau/rest/client/RestClient.html#getRemoteableProxy-java.lang.Class-java.lang.Object-"><code>RestClient.getRemoteableProxy(Class,Object)</code></a>
 - For interface proxies defined using 
<code><ja>@RestMethod</ja>(name=<js>"PROXY"</js>)</code>.
+            <li><a 
href="org/apache/juneau/rest/client/RestClient.html#getRemoteableProxy-java.lang.Class-java.lang.Object-org.apache.juneau.serializer.Serializer-org.apache.juneau.parser.Parser-"><code>RestClient.getRemoteableProxy(Class,Object,Serializer,Parser)</code></a>
 - Same as above, but overrides the serializer and parser defined on the client.
+         </ul>
+         <li>New methods added to <a 
href="org/apache/juneau/rest/client/RestClientBuilder.html" title="class in 
org.apache.juneau.rest.client"><code>RestClientBuilder</code></a>:
+         <ul>
+            <li><a 
href="org/apache/juneau/rest/client/RestClientBuilder.html#noTrace--"><code>RestClientBuilder.noTrace()</code></a>
 - Adds a <code>No-Trace: true</code> header on all requests to prevent
+               the servlet from logging errors.
+               Useful for testing scenarios when you don't want the console to 
end up showing errors done on purpose.
+            <li><a 
href="org/apache/juneau/rest/client/RestClientBuilder.html#debug-boolean-"><code>RestClientBuilder.debug(boolean)</code></a>
 now adds a <code>Debug: true</code> header on all requests.
+         </ul>
+         <li>New doc: <a class='doclink' 
href='org/apache/juneau/rest/client/package-summary.html#Debugging'>1.5 - 
Debugging</a>
       </ul>
       
       <h6 class='topic'>org.apache.juneau.microservice</h6>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/236aea45/content/site/apidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-tree.html 
b/content/site/apidocs/overview-tree.html
index d576a9c..4aba9c3 100644
--- a/content/site/apidocs/overview-tree.html
+++ b/content/site/apidocs/overview-tree.html
@@ -270,6 +270,7 @@
 </li>
 <li type="circle">org.apache.juneau.internal.<a 
href="org/apache/juneau/internal/ClassUtils.html" title="class in 
org.apache.juneau.internal"><span 
class="typeNameLink">ClassUtils</span></a></li>
 <li type="circle">org.apache.juneau.internal.<a 
href="org/apache/juneau/internal/ClassUtils.ClassComparator.html" title="class 
in org.apache.juneau.internal"><span 
class="typeNameLink">ClassUtils.ClassComparator</span></a> (implements 
java.util.<a 
href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html?is-external=true";
 title="class or interface in java.util">Comparator</a>&lt;T&gt;, java.io.<a 
href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true";
 title="class or interface in java.io">Serializable</a>)</li>
+<li type="circle">org.apache.juneau.internal.<a 
href="org/apache/juneau/internal/ClassUtils.MethodInfo.html" title="class in 
org.apache.juneau.internal"><span 
class="typeNameLink">ClassUtils.MethodInfo</span></a></li>
 <li type="circle">org.apache.juneau.internal.<a 
href="org/apache/juneau/internal/CollectionUtils.html" title="class in 
org.apache.juneau.internal"><span 
class="typeNameLink">CollectionUtils</span></a></li>
 <li type="circle">org.apache.juneau.dto.cognos.<a 
href="org/apache/juneau/dto/cognos/Column.html" title="class in 
org.apache.juneau.dto.cognos"><span class="typeNameLink">Column</span></a></li>
 <li type="circle">org.apache.juneau.dto.atom.<a 
href="org/apache/juneau/dto/atom/Common.html" title="class in 
org.apache.juneau.dto.atom"><span class="typeNameLink">Common</span></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/236aea45/content/site/apidocs/serialized-form.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/serialized-form.html 
b/content/site/apidocs/serialized-form.html
index 51ae46d..ccc29b4 100644
--- a/content/site/apidocs/serialized-form.html
+++ b/content/site/apidocs/serialized-form.html
@@ -545,10 +545,22 @@
 <h4>e</h4>
 <pre>org.apache.http.client.HttpResponseException e</pre>
 </li>
-<li class="blockListLast">
+<li class="blockList">
 <h4>httpResponse</h4>
 <pre>org.apache.http.HttpResponse httpResponse</pre>
 </li>
+<li class="blockList">
+<h4>serverExceptionName</h4>
+<pre><a 
href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a> serverExceptionName</pre>
+</li>
+<li class="blockList">
+<h4>serverExceptionMessage</h4>
+<pre><a 
href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a> serverExceptionMessage</pre>
+</li>
+<li class="blockListLast">
+<h4>serverExceptionTrace</h4>
+<pre><a 
href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a> serverExceptionTrace</pre>
+</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/236aea45/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html 
b/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
index ce6ceec..6627ff9 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
@@ -740,7 +740,7 @@
 <span class="sourceLineNo">732</span>      if (m == null)<a 
name="line.732"></a>
 <span class="sourceLineNo">733</span>         return null;<a 
name="line.733"></a>
 <span class="sourceLineNo">734</span>      T bean = null;<a 
name="line.734"></a>
-<span class="sourceLineNo">735</span>      if (m.constructorArgs.length == 0) 
<a name="line.735"></a>
+<span class="sourceLineNo">735</span>      if (m.constructorArgs.length == 
0)<a name="line.735"></a>
 <span class="sourceLineNo">736</span>         bean = newBean(outer, c);<a 
name="line.736"></a>
 <span class="sourceLineNo">737</span>      return new BeanMap&lt;T&gt;(this, 
bean, m);<a name="line.737"></a>
 <span class="sourceLineNo">738</span>   }<a name="line.738"></a>
@@ -782,7 +782,7 @@
 <span class="sourceLineNo">774</span>         return null;<a 
name="line.774"></a>
 <span class="sourceLineNo">775</span>      try {<a name="line.775"></a>
 <span class="sourceLineNo">776</span>         T o = (T)m.newBean(outer);<a 
name="line.776"></a>
-<span class="sourceLineNo">777</span>         if (o == null) <a 
name="line.777"></a>
+<span class="sourceLineNo">777</span>         if (o == null)<a 
name="line.777"></a>
 <span class="sourceLineNo">778</span>            throw new 
BeanRuntimeException(c, "Class does not have a no-arg constructor.");<a 
name="line.778"></a>
 <span class="sourceLineNo">779</span>         return o;<a name="line.779"></a>
 <span class="sourceLineNo">780</span>      } catch (BeanRuntimeException e) 
{<a name="line.780"></a>
@@ -851,13 +851,13 @@
 <span class="sourceLineNo">843</span>   }<a name="line.843"></a>
 <span class="sourceLineNo">844</span><a name="line.844"></a>
 <span class="sourceLineNo">845</span>   /**<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    * Given an array of {@link Class} 
objects, returns an array of corresponding {@link ClassMeta} objects.<a 
name="line.846"></a>
+<span class="sourceLineNo">846</span>    * Given an array of {@link Type} 
objects, returns an array of corresponding {@link ClassMeta} objects.<a 
name="line.846"></a>
 <span class="sourceLineNo">847</span>    * Constructs a new array on each 
call.<a name="line.847"></a>
 <span class="sourceLineNo">848</span>    *<a name="line.848"></a>
 <span class="sourceLineNo">849</span>    * @param classes The array of classes 
to get class metas for.<a name="line.849"></a>
 <span class="sourceLineNo">850</span>    * @return An array of {@link 
ClassMeta} objects corresponding to the classes.  Never 
&lt;jk&gt;null&lt;/jk&gt;.<a name="line.850"></a>
 <span class="sourceLineNo">851</span>    */<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   public final ClassMeta&lt;?&gt;[] 
getClassMetas(Class&lt;?&gt;[] classes) {<a name="line.852"></a>
+<span class="sourceLineNo">852</span>   public final ClassMeta&lt;?&gt;[] 
getClassMetas(Type[] classes) {<a name="line.852"></a>
 <span class="sourceLineNo">853</span>      assertFieldNotNull(classes, 
"classes");<a name="line.853"></a>
 <span class="sourceLineNo">854</span>      ClassMeta&lt;?&gt;[] cm = new 
ClassMeta&lt;?&gt;[classes.length];<a name="line.854"></a>
 <span class="sourceLineNo">855</span>      for (int i = 0; i &lt; 
classes.length; i++)<a name="line.855"></a>

Reply via email to