Simplify default req/res header annotations.
diff --git a/juneau-doc/docs/ReleaseNotes/5.0.0.09.html b/juneau-doc/docs/ReleaseNotes/5.0.0.09.html
index fbfb4d8..c8b3bb3 100644
--- a/juneau-doc/docs/ReleaseNotes/5.0.0.09.html
+++ b/juneau-doc/docs/ReleaseNotes/5.0.0.09.html
@@ -39,7 +39,7 @@
 	<li>New <dc>@RestResource.defaultRequestHeaders</dc> and <dc>@RestResource.defaultResponseHeaders</dc> annotations.</li>
 	<li>New {@link oajr.annotation.RestMethod#serializers() @RestMethod(serializers)} and {@link oajr.annotation.RestMethod#parsers() @RestMethod(parsers)} annotations.</li>
 	<li>New {@link oajr.annotation.RestMethod#properties() @RestMethod(properties)} annotation.</li>
-	<li>New {@link oajr.annotation.RestMethod#defaultRequestHeaders() @RestMethod(defaultRequestHeaders)} annotation.</li>
+	<li>New <dc>@RestMethod(defaultRequestHeaders)</dc> annotation.</li>
 	<li>New {@link oajr.annotation.RestMethod#matchers() @RestMethod(matchers)} annotation and {@link oajr.RestMatcher} class.</li>
 	<li><c>Readers</c> and <c>InputStreams</c> can be specified on <dc>@Content</dc> annotated parameters.</li>
 	<li>New <dc>@HasParam</dc> annotation.</li>
diff --git a/juneau-doc/docs/ReleaseNotes/7.1.0.html b/juneau-doc/docs/ReleaseNotes/7.1.0.html
index 86918b4..04da84a 100644
--- a/juneau-doc/docs/ReleaseNotes/7.1.0.html
+++ b/juneau-doc/docs/ReleaseNotes/7.1.0.html
@@ -273,8 +273,8 @@
 			<li>{@link oajr.RestContext#REST_converters REST_converters}
 			<li>{@link oajr.RestContext#REST_guards REST_guards}
 			<li>{@link oajr.RestContext#REST_responseHandlers REST_responseHandlers}
-			<li>{@link oajr.RestContext#REST_defaultRequestHeaders REST_defaultRequestHeaders}
-			<li>{@link oajr.RestContext#REST_defaultResponseHeaders REST_defaultResponseHeaders}
+			<li><dc>REST_defaultRequestHeaders</dc>
+			<li><dc>REST_defaultResponseHeaders</dc>
 			<li>{@link oajr.RestContext#REST_produces REST_produces}
 			<li>{@link oajr.RestContext#REST_consumes REST_consumes}
 			<li>{@link oajr.RestContext#REST_clientVersionHeader REST_clientVersionHeader}
diff --git a/juneau-doc/docs/ReleaseNotes/8.1.0.html b/juneau-doc/docs/ReleaseNotes/8.1.0.html
index dcda35f..3f3c66c 100644
--- a/juneau-doc/docs/ReleaseNotes/8.1.0.html
+++ b/juneau-doc/docs/ReleaseNotes/8.1.0.html
@@ -211,12 +211,12 @@
 			<li class='jc'>{@link oajr.RequestAttributes}
 			<li class='jc'>{@link oajr.RestContext}
 			<ul>
-				<li class='jf'>{@link oajr.RestContext#REST_attrs REST_attrs}
+				<li class='jf'><dc>REST_attrs</dc>
 			</ul>
 			<li class='jc'>{@link oajr.RestContextBuilder}
 			<ul>
-				<li class='jm'>{@link oajr.RestContextBuilder#attrs(String...) attrs(String...)}
-				<li class='jm'>{@link oajr.RestContextBuilder#attr(String,Object) attr(String,Object)}
+				<li class='jm'><dc>attrs(String...)</dc>
+				<li class='jm'><dc>attr(String,Object)</dc>
 			</ul>
 			<li class='jc'>{@link oajr.RestMethodContext}
 			<ul>
@@ -232,7 +232,7 @@
 				<li class='jm'>{@link oajr.RestResponse#attr(String,Object) attr(String,Object)}
 			</ul>
 			<li class='ja'>{@link oajr.annotation.Attr}
-			<li class='ja'>{@link oajr.annotation.RestMethod#attrs()}
+			<li class='ja'><dc>RestMethod#attrs()</dc>
 			<li class='ja'><dc>RestResource.attrs()</dc>
 		</ul>
 		<br>This deprecates the following APIs:
diff --git a/juneau-doc/docs/ReleaseNotes/8.1.3.html b/juneau-doc/docs/ReleaseNotes/8.1.3.html
index 530f5f2..05cb78c 100644
--- a/juneau-doc/docs/ReleaseNotes/8.1.3.html
+++ b/juneau-doc/docs/ReleaseNotes/8.1.3.html
@@ -48,6 +48,15 @@
 	<li>
 		Fixed a bug where <c><ja>@RestResource</ja>(debug=<js>"true"</js>)</c> wouldn't log requests if a 
 		<ja>@RestMethod</ja>-annotated method was not matched.
+	<li>
+		Renamed the following annotations:
+		<ul>
+			<li><ja>@Rest(attrs)</ja> --&gt; {@link oajr.annotation.Rest#reqAttrs() @Rest(reqAttrs)}
+			<li><ja>@Rest(defaultRequestHeaders)</ja> --&gt; {@link oajr.annotation.Rest#reqHeaders() @Rest(reqHeaders)}
+			<li><ja>@Rest(defaultResponseHeaders)</ja> --&gt; {@link oajr.annotation.Rest#resHeaders() @Rest(resHeaders)}
+			<li><ja>@RestMethod(attrs)</ja> --&gt; {@link oajr.annotation.RestMethod#reqAttrs() @RestMethod(reqAttrs)}
+			<li><ja>@RestMethod(defaultRequestHeaders)</ja> --&gt; {@link oajr.annotation.RestMethod#reqHeaders() @RestMethod(reqHeaders)}
+		</ul>
 		
 </ul>
 
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/04.Rest/01.AnnotationInheritance.html b/juneau-doc/docs/Topics/06.juneau-rest-server/04.Rest/01.AnnotationInheritance.html
index 3de6c54..9a2c90b 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/04.Rest/01.AnnotationInheritance.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/04.Rest/01.AnnotationInheritance.html
@@ -85,7 +85,7 @@
 		</td>
 	</tr>
 	<tr>
-		<td>{@link oajr.annotation.Rest#defaultRequestHeaders() defaultRequestHeaders()}</td>
+		<td>{@link oajr.annotation.Rest#reqHeaders() reqHeaders()}</td>
 		<td>
 			Headers on child are combined with those on parent class.
 			<br>Headers are applied parent-to-child in the order they appear in the annotation.
@@ -93,7 +93,7 @@
 		</td>
 	</tr>
 	<tr>
-		<td>{@link oajr.annotation.Rest#defaultResponseHeaders() defaultResponseHeaders()}</td>
+		<td>{@link oajr.annotation.Rest#resHeaders() resHeaders()}</td>
 		<td>
 			Headers on child are combined with those on parent class.
 			<br>Headers are applied parent-to-child in the order they appear in the annotation.
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/31.DefaultHeaders.html b/juneau-doc/docs/Topics/06.juneau-rest-server/31.DefaultHeaders.html
index e2f70d5..8469108 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/31.DefaultHeaders.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/31.DefaultHeaders.html
@@ -20,10 +20,10 @@
 </p>
 <ul class='javatree'>
 	<li class='ja'>
-		{@link oajr.annotation.Rest#defaultRequestHeaders() Rest(defaultRequestHeaders)} 
+		{@link oajr.annotation.Rest#reqHeaders() Rest(reqHeaders)} 
 		<br>Defines default headers on request when the client doesn't specify them.
 	<li class='ja'>
-		{@link oajr.annotation.Rest#defaultResponseHeaders() Rest(defaultResponseHeaders)}
+		{@link oajr.annotation.Rest#resHeaders() Rest(resHeaders)}
 		<br>Appends the specified headers if they weren't already set programmatically.	
 </ul>		
 
@@ -33,10 +33,10 @@
 	<ja>@Rest</ja>(
 
 		<jc>// Assume "text/json" Accept value when Accept not specified</jc>
-		defaultRequestHeaders={<js>"Accept: text/json"</js>},
+		reqHeaders={<js>"Accept: text/json"</js>},
 
 		<jc>// Add a version header attribute to all responses</jc>
-		defaultResponseHeaders={<js>"X-Version: 1.0"</js>}
+		resHeaders={<js>"X-Version: 1.0"</js>}
 	)
 	<jk>public</jk> MyRestServlet <jk>extends</jk> BasicRestServlet {
 		...
@@ -50,9 +50,9 @@
 		{@link oajr.RestContextBuilder}
 		<ul>
 			<li class='jm'>
-				{@link oajr.RestContextBuilder#defaultRequestHeaders(String[])}
+				{@link oajr.RestContextBuilder#reqHeaders(String[])}
 			<li class='jm'>
-				{@link oajr.RestContextBuilder#defaultResponseHeaders(String[])}
+				{@link oajr.RestContextBuilder#resHeaders(String[])}
 		</ul>
 	</li>
 </ul>
diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/NlsTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/NlsTest.java
index 6c75034..3d8b1e7 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/NlsTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/NlsTest.java
@@ -35,7 +35,7 @@
 

 	@Rest(

 		serializers={A01.class},

-		attrs={"TestProperty:$L{key1}"},

+		reqAttrs={"TestProperty:$L{key1}"},

 		messages="NlsTest"

 	)

 	public static class A {

@@ -44,7 +44,7 @@
 			return null;

 		}

 		@RestMethod(

-			attrs={"TestProperty:$L{key2}"}

+			reqAttrs={"TestProperty:$L{key2}"}

 		)

 		public String a02() {

 			return null;

diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestResourcePropertiesTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestResourcePropertiesTest.java
index db1edef..d4c690a 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestResourcePropertiesTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestResourcePropertiesTest.java
@@ -37,7 +37,7 @@
 

 	@Rest(

 		path="/p1",

-		attrs={

+		reqAttrs={

 			"A1: a1",

 			"A2: a2",

 			"foo: bar",

@@ -54,7 +54,7 @@
 	public static class A {

 

 		@RestMethod(name=GET, path="/p2",

-			attrs={"B1: b1", "B2:b"},

+			reqAttrs={"B1: b1", "B2:b"},

 			serializers=A01.class

 		)

 		public void testPropertiesDefinedOnMethod(RestResponse res) {

diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestHookTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestHookTest.java
index 9d00e24..ebeacc2 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestHookTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestHookTest.java
@@ -46,7 +46,7 @@
 
 	@Rest(
 		parsers=A01.class,
-		attrs={
+		reqAttrs={
 			"p1:sp1", // Unchanged servlet-level property.
 			"p2:sp2", // Servlet-level property overridden by onPreCall.
 			"p3:sp3", // Servlet-level property overridded by method.
@@ -67,7 +67,7 @@
 		}
 
 		@RestMethod(name=PUT, path="/propertiesOverriddenByAnnotation",
-			attrs={
+			reqAttrs={
 				"p3:mp3",
 				"p4:mp4"
 			}
@@ -119,7 +119,7 @@
 
 	@Rest(
 		serializers=B01.class,
-		attrs={
+		reqAttrs={
 			"p1:sp1", // Unchanged servlet-level property.
 			"p2:sp2", // Servlet-level property overridden by onPostCall.
 			"p3:sp3", // Servlet-level property overridded by method.
@@ -143,11 +143,11 @@
 		}
 
 		@RestMethod(name=PUT, path="/propertiesOverridenByAnnotation",
-			attrs={
+			reqAttrs={
 				"p3:mp3",
 				"p4:mp4"
 			},
-			defaultRequestHeaders="Accept: text/s2"
+			reqHeaders="Accept: text/s2"
 		)
 		public String b01() {
 			return null;
diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestMethodInheritTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestMethodInheritTest.java
index 3869c71..d7b745c 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestMethodInheritTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/RestMethodInheritTest.java
@@ -271,10 +271,10 @@
 	// Test properties inheritance.

 	//=================================================================================================================

 

-	@Rest(attrs={"p1:v1","p2:v2"})

+	@Rest(reqAttrs={"p1:v1","p2:v2"})

 	public static class E {}

 

-	@Rest(attrs={"p2:v2a","p3:v3","p4:v4"})

+	@Rest(reqAttrs={"p2:v2a","p3:v3","p4:v4"})

 	public static class E01 extends E {}

 

 	@Rest

@@ -284,7 +284,7 @@
 			// Should show {p1:'v1',p2:'v2a',p3:'v3',p4:'v4'}

 			return transform(attrs);

 		}

-		@RestMethod(attrs={"p4:v4a","p5:v5"})

+		@RestMethod(reqAttrs={"p4:v4a","p5:v5"})

 		public ObjectMap e02(RequestAttributes attrs, @HasQuery("override") boolean override) {

 			// Should show {p1:'v1',p2:'v2a',p3:'v3',p4:'v4a',p5:'v5'} when override is false.

 			// Should show {p1:'x',p2:'x',p3:'x',p4:'x',p5:'x'} when override is true.

diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptTest.java
index 1e497a5..5f3ba03 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/AcceptTest.java
@@ -62,7 +62,7 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Accept : text/s2 "},

+		reqHeaders={" Accept : text/s2 "},

 		serializers={S1.class,S2.class}

 	)

 	public static class A {

@@ -91,7 +91,7 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Accept : text/s2 "},

+		reqHeaders={" Accept : text/s2 "},

 		serializers={S1.class,S2.class}

 	)

 	public static class B {

@@ -123,7 +123,7 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Accept : text/s2 "},

+		reqHeaders={" Accept : text/s2 "},

 		serializers={S1.class,S2.class}

 	)

 	public static class C {

@@ -157,7 +157,7 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Accept : text/s2 "},

+		reqHeaders={" Accept : text/s2 "},

 		serializers={S1.class,S2.class}

 	)

 	public static class D {

@@ -195,11 +195,11 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Accept : text/s2 "},

+		reqHeaders={" Accept : text/s2 "},

 		serializers={S1.class,S2.class}

 	)

 	public static class E {

-		@RestMethod(name=PUT, defaultRequestHeaders={"Accept: text/s3"}, serializers=S3.class)

+		@RestMethod(name=PUT, reqHeaders={"Accept: text/s3"}, serializers=S3.class)

 		public String d(@Body String in) {

 			return in;

 		}

@@ -233,11 +233,11 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Accept : text/s2 ",},

+		reqHeaders={" Accept : text/s2 ",},

 		serializers={S1.class,S2.class}

 	)

 	public static class F {

-		@RestMethod(name=PUT, defaultRequestHeaders={"Accept: text/s3"}, serializers={Inherit.class, S3.class})

+		@RestMethod(name=PUT, reqHeaders={"Accept: text/s3"}, serializers={Inherit.class, S3.class})

 		public String f(@Body String in) {

 			return in;

 		}

diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java
index 55d82c8..95ea2b7 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/ContentTypeTest.java
@@ -64,7 +64,7 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Content-Type : text/p2 "},

+		reqHeaders={" Content-Type : text/p2 "},

 		parsers={P1.class,P2.class}

 	)

 	public static class A {

@@ -93,7 +93,7 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Content-Type : text/p2 "},

+		reqHeaders={" Content-Type : text/p2 "},

 		parsers={P1.class,P2.class}

 	)

 	public static class B {

@@ -137,7 +137,7 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Content-Type : text/p2 "},

+		reqHeaders={" Content-Type : text/p2 "},

 		parsers={P1.class,P2.class}

 	)

 	public static class C {

@@ -172,11 +172,11 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Content-Type : text/p2 "},

+		reqHeaders={" Content-Type : text/p2 "},

 		parsers={P1.class,P2.class}

 	)

 	public static class E {

-		@RestMethod(name=PUT, defaultRequestHeaders={"Content-Type: text/p3"}, parsers=P3.class)

+		@RestMethod(name=PUT, reqHeaders={"Content-Type: text/p3"}, parsers=P3.class)

 		public String e(@Body String in) {

 			return in;

 		}

@@ -210,11 +210,11 @@
 	//=================================================================================================================

 

 	@Rest(

-		defaultRequestHeaders={" Content-Type : text/p2 "},

+		reqHeaders={" Content-Type : text/p2 "},

 		parsers={P1.class,P2.class}

 	)

 	public static class F {

-		@RestMethod(name=PUT, defaultRequestHeaders={"Content-Type: text/p3"}, parsers={Inherit.class,P3.class})

+		@RestMethod(name=PUT, reqHeaders={"Content-Type: text/p3"}, parsers={Inherit.class,P3.class})

 		public String f(@Body String in) {

 			return in;

 		}

diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/HeadersTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/HeadersTest.java
index 689cbd4..e30085d 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/HeadersTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/headers/HeadersTest.java
@@ -459,7 +459,7 @@
 

 	@Rest

 	public static class C {

-		@RestMethod(defaultRequestHeaders={"H1:1","H2=2"," H3 : 3 "})

+		@RestMethod(reqHeaders={"H1:1","H2=2"," H3 : 3 "})

 		public ObjectMap c(RequestHeaders headers) {

 			return new ObjectMap()

 				.append("h1", headers.getString("H1"))

@@ -470,15 +470,15 @@
 	static MockRest c = MockRest.build(C.class, null);

 

 	@Test

-	public void c01_defaultRequestHeaders_default() throws Exception {

+	public void c01_reqHeaders_default() throws Exception {

 		c.get("/c").execute().assertBody("{h1:'1',h2:'2',h3:'3'}");

 	}

 	@Test

-	public void c02_defaultRequestHeaders_override() throws Exception {

+	public void c02_reqHeaders_override() throws Exception {

 		c.get("/c").header("H1",4).header("H2",5).header("H3",6).execute().assertBody("{h1:'4',h2:'5',h3:'6'}");

 	}

 	@Test

-	public void c03_defaultRequestHeaders_override_caseInsensitive() throws Exception {

+	public void c03_reqHeaders_override_caseInsensitive() throws Exception {

 		c.get("/c").header("h1",4).header("h2",5).header("h3",6).execute().assertBody("{h1:'4',h2:'5',h3:'6'}");

 	}

 

@@ -488,7 +488,7 @@
 

 	@Rest

 	public static class D {

-		@RestMethod(defaultRequestHeaders={"H1:1","H2=2"," H3 : 3 "})

+		@RestMethod(reqHeaders={"H1:1","H2=2"," H3 : 3 "})

 		public ObjectMap d(RequestHeaders headers) {

 			return new ObjectMap()

 				.append("h1", headers.getString("h1"))

@@ -499,15 +499,15 @@
 	static MockRest d = MockRest.build(D.class, null);

 

 	@Test

-	public void d01_defaultRequestHeadersCaseInsensitive_default() throws Exception {

+	public void d01_reqHeadersCaseInsensitive_default() throws Exception {

 		d.get("/d").execute().assertBody("{h1:'1',h2:'2',h3:'3'}");

 	}

 	@Test

-	public void d02_defaultRequestHeadersCaseInsensitive_override() throws Exception {

+	public void d02_reqHeadersCaseInsensitive_override() throws Exception {

 		d.get("/d").header("H1",4).header("H2",5).header("H3",6).execute().assertBody("{h1:'4',h2:'5',h3:'6'}");

 	}

 	@Test

-	public void d03_defaultRequestHeadersCaseInsensitive_override_caseInsensitive() throws Exception {

+	public void d03_reqHeadersCaseInsensitive_override_caseInsensitive() throws Exception {

 		d.get("/d").header("h1",4).header("h2",5).header("h3",6).execute().assertBody("{h1:'4',h2:'5',h3:'6'}");

 	}

 

@@ -629,7 +629,7 @@
 

 	@Rest

 	public static class H {

-		@RestMethod(defaultRequestHeaders={"H1:1","H2=2"," H3 : 3 "})

+		@RestMethod(reqHeaders={"H1:1","H2=2"," H3 : 3 "})

 		public ObjectMap h(@Header(value="h1",_default="4") String h1, @Header(value="h2",_default="5") String h2, @Header(value="h3",_default="6") String h3) {

 			return new ObjectMap()

 				.append("h1", h1)

diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallLogger.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallLogger.java
index 37d1892..b73828d 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallLogger.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicRestCallLogger.java
@@ -182,7 +182,7 @@
 			}
 
 			if (context != null && reqd.isOneOf(MEDIUM, LONG)) {
-				Map<String,Object> hh = context.getDefaultRequestHeaders();
+				Map<String,Object> hh = context.getReqHeaders();
 				if (! hh.isEmpty()) {
 					sb.append("\n---Default Servlet Headers---");
 					for (Map.Entry<String,Object> h : hh.entrySet()) {
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 95a27e0..d0f7463 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1113,202 +1113,27 @@
 

 	/**

 	 * Configuration property:  Default request attributes.

-	 *

-	 * <h5 class='section'>Property:</h5>

-	 * <ul>

-	 * 	<li><b>Name:</b>  <js>"RestContext.attrs.smo"</js>

-	 * 	<li><b>Data type:</b>  <c>Map&lt;String,Object&gt;</c>

-	 * 	<li><b>Default:</b>  empty map

-	 * 	<li><b>Session property:</b>  <jk>false</jk>

-	 * 	<li><b>Annotations:</b>

-	 * 		<ul>

-	 * 			<li class='ja'>{@link Rest#attrs()}

-	 * 			<li class='ja'>{@link RestMethod#attrs()}

-	 * 		</ul>

-	 * 	<li><b>Methods:</b>

-	 * 		<ul>

-	 * 			<li class='jm'>{@link RestContextBuilder#attrs(String...)}

-	 * 			<li class='jm'>{@link RestContextBuilder#attr(String,Object)}

-	 * 		</ul>

-	 * </ul>

-	 *

-	 * <h5 class='section'>Description:</h5>

-	 * <p>

-	 * Specifies default values for request attributes if they're not already set on the request.

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Strings are in the format <js>"Name: value"</js>.

-	 * 	<li>

-	 * 		Affects values returned by the following methods:

-	 * 		<ul>

-	 * 			<li class='jm'>{@link RestRequest#getAttribute(String)}.

-	 * 			<li class='jm'>{@link RestRequest#getAttributes()}.

-	 * 		</ul>

-	 * </ul>

-	 *

-	 * <h5 class='section'>Example:</h5>

-	 * <p class='bcode w800'>

-	 * 	<jc>// Option #1 - Defined via annotation resolving to a config file setting with default value.</jc>

-	 * 	<ja>@Rest</ja>(defaultRequestAttributes={<js>"Foo: bar"</js>, <js>"Baz: $C{REST/myAttributeValue}"</js>})

-	 * 	<jk>public class</jk> MyResource {

-	 *

-	 * 		<jc>// Option #2 - Defined via builder passed in through resource constructor.</jc>

-	 * 		<jk>public</jk> MyResource(RestContextBuilder builder) <jk>throws</jk> Exception {

-	 *

-	 * 			<jc>// Using method on builder.</jc>

-	 * 			builder

-	 * 				.attr(<js>"Foo"</js>, <js>"bar"</js>);

-	 * 				.attr(<js>"Baz: true"</js>);

-	 *

-	 * 			<jc>// Same, but using property.</jc>

-	 * 			builder.addTo(<jsf>REST_attrs</jsf>, <js>"Foo"</js>, <js>"bar"</js>);

-	 * 		}

-	 *

-	 * 		<jc>// Option #3 - Defined via builder passed in through init method.</jc>

-	 * 		<ja>@RestHook</ja>(<jsf>INIT</jsf>)

-	 * 		<jk>public void</jk> init(RestContextBuilder builder) <jk>throws</jk> Exception {

-	 * 			builder.attr(<js>"Foo"</js>, <js>"bar"</js>);

-	 * 		}

-	 *

-	 * 		<jc>// Override at the method level.</jc>

-	 * 		<ja>@RestMethod</ja>(attrs={<js>"Foo: bar"</js>})

-	 * 		public Object myMethod() {...}

-	 * 	}

-	 * </p>

+	 * 

+	 * @deprecated Use {@link #REST_reqAttrs}

 	 */

-	public static final String REST_attrs = PREFIX + ".attrs.smo";

+	@Deprecated

+	public static final String REST_attrs = PREFIX + ".reqAttrs.smo";

 

 	/**

 	 * Configuration property:  Default request headers.

-	 *

-	 * <h5 class='section'>Property:</h5>

-	 * <ul>

-	 * 	<li><b>Name:</b>  <js>"RestContext.defaultRequestHeaders.smo"</js>

-	 * 	<li><b>Data type:</b>  <c>Map&lt;String,String&gt;</c>

-	 * 	<li><b>Default:</b>  empty map

-	 * 	<li><b>Session property:</b>  <jk>false</jk>

-	 * 	<li><b>Annotations:</b>

-	 * 		<ul>

-	 * 			<li class='ja'>{@link Rest#defaultRequestHeaders()}

-	 * 			<li class='ja'>{@link RestMethod#defaultRequestHeaders()}

-	 * 		</ul>

-	 * 	<li><b>Methods:</b>

-	 * 		<ul>

-	 * 			<li class='jm'>{@link RestContextBuilder#defaultRequestHeader(String,Object)}

-	 * 			<li class='jm'>{@link RestContextBuilder#defaultRequestHeaders(String...)}

-	 * 		</ul>

-	 * </ul>

-	 *

-	 * <h5 class='section'>Description:</h5>

-	 * <p>

-	 * Specifies default values for request headers if they're not passed in through the request.

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Strings are in the format <js>"Header-Name: header-value"</js>.

-	 * 	<li>

-	 * 		Affects values returned by {@link RestRequest#getHeader(String)} when the header is not present on the request.

-	 * 	<li>

-	 * 		The most useful reason for this annotation is to provide a default <c>Accept</c> header when one is not

-	 * 		specified so that a particular default {@link Serializer} is picked.

-	 * </ul>

-	 *

-	 * <h5 class='section'>Example:</h5>

-	 * <p class='bcode w800'>

-	 * 	<jc>// Option #1 - Defined via annotation resolving to a config file setting with default value.</jc>

-	 * 	<ja>@Rest</ja>(defaultRequestHeaders={<js>"Accept: application/json"</js>, <js>"My-Header: $C{REST/myHeaderValue}"</js>})

-	 * 	<jk>public class</jk> MyResource {

-	 *

-	 * 		<jc>// Option #2 - Defined via builder passed in through resource constructor.</jc>

-	 * 		<jk>public</jk> MyResource(RestContextBuilder builder) <jk>throws</jk> Exception {

-	 *

-	 * 			<jc>// Using method on builder.</jc>

-	 * 			builder

-	 * 				.defaultRequestHeader(<js>"Accept"</js>, <js>"application/json"</js>);

-	 * 				.defaultRequestHeaders(<js>"My-Header: foo"</js>);

-	 *

-	 * 			<jc>// Same, but using property.</jc>

-	 * 			builder.addTo(<jsf>REST_defaultRequestHeaders</jsf>, <js>"Accept"</js>, <js>"application/json"</js>);

-	 * 		}

-	 *

-	 * 		<jc>// Option #3 - Defined via builder passed in through init method.</jc>

-	 * 		<ja>@RestHook</ja>(<jsf>INIT</jsf>)

-	 * 		<jk>public void</jk> init(RestContextBuilder builder) <jk>throws</jk> Exception {

-	 * 			builder.defaultRequestHeader(<js>"Accept"</js>, <js>"application/json"</js>);

-	 * 		}

-	 *

-	 * 		<jc>// Override at the method level.</jc>

-	 * 		<ja>@RestMethod</ja>(defaultRequestHeaders={<js>"Accept: text/xml"</js>})

-	 * 		public Object myMethod() {...}

-	 * 	}

-	 * </p>

+	 * 

+	 * @deprecated Use {@link #REST_reqHeaders}

 	 */

-	public static final String REST_defaultRequestHeaders = PREFIX + ".defaultRequestHeaders.smo";

+	@Deprecated

+	public static final String REST_defaultRequestHeaders = PREFIX + ".reqHeaders.smo";

 

 	/**

 	 * Configuration property:  Default response headers.

-	 *

-	 * <h5 class='section'>Property:</h5>

-	 * <ul>

-	 * 	<li><b>Name:</b>  <js>"RestContext.defaultResponseHeaders.omo"</js>

-	 * 	<li><b>Data type:</b>  <c>Map&lt;String,String&gt;</c>

-	 * 	<li><b>Default:</b>  empty map

-	 * 	<li><b>Session property:</b>  <jk>false</jk>

-	 * 	<li><b>Annotations:</b>

-	 * 		<ul>

-	 * 			<li class='ja'>{@link Rest#defaultResponseHeaders()}

-	 * 		</ul>

-	 * 	<li><b>Methods:</b>

-	 * 		<ul>

-	 * 			<li class='jm'>{@link RestContextBuilder#defaultResponseHeader(String,Object)}

-	 * 			<li class='jm'>{@link RestContextBuilder#defaultResponseHeaders(String...)}

-	 * 		</ul>

-	 * </ul>

-	 *

-	 * <h5 class='section'>Description:</h5>

-	 * <p>

-	 * Specifies default values for response headers if they're not set after the Java REST method is called.

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Strings are in the format <js>"Header-Name: header-value"</js>.

-	 * 	<li>

-	 * 		This is equivalent to calling {@link RestResponse#setHeader(String, String)} programmatically in each of

-	 * 		the Java methods.

-	 * 	<li>

-	 * 		The header value will not be set if the header value has already been specified (hence the 'default' in the name).

-	 * </ul>

-	 *

-	 * <h5 class='section'>Example:</h5>

-	 * <p class='bcode w800'>

-	 * 	<jc>// Option #1 - Defined via annotation resolving to a config file setting with default value.</jc>

-	 * 	<ja>@Rest</ja>(defaultResponseHeaders={<js>"Content-Type: $C{REST/defaultContentType,text/plain}"</js>,<js>"My-Header: $C{REST/myHeaderValue}"</js>})

-	 * 	<jk>public class</jk> MyResource {

-	 *

-	 * 		<jc>// Option #2 - Defined via builder passed in through resource constructor.</jc>

-	 * 		<jk>public</jk> MyResource(RestContextBuilder builder) <jk>throws</jk> Exception {

-	 *

-	 * 			<jc>// Using method on builder.</jc>

-	 * 			builder

-	 * 				.defaultResponseHeader(<js>"Content-Type"</js>, <js>"text/plain"</js>);

-	 * 				.defaultResponseHeaders(<js>"My-Header: foo"</js>);

-	 *

-	 * 			<jc>// Same, but using property.</jc>

-	 * 			builder

-	 * 				.addTo(<jsf>REST_defaultRequestHeaders</jsf>, <js>"Accept"</js>, <js>"application/json"</js>);

-	 * 				.addTo(<jsf>REST_defaultRequestHeaders</jsf>, <js>"My-Header"</js>, <js>"foo"</js>);

-	 * 		}

-	 *

-	 * 		<jc>// Option #3 - Defined via builder passed in through init method.</jc>

-	 * 		<ja>@RestHook</ja>(<jsf>INIT</jsf>)

-	 * 		<jk>public void</jk> init(RestContextBuilder builder) <jk>throws</jk> Exception {

-	 * 			builder.defaultResponseHeader(<js>"Content-Type"</js>, <js>"text/plain"</js>);

-	 * 		}

-	 * 	}

-	 * </p>

+	 * 

+	 * @deprecated Use {@link #REST_resHeaders}

 	 */

-	public static final String REST_defaultResponseHeaders = PREFIX + ".defaultResponseHeaders.omo";

+	@Deprecated

+	public static final String REST_defaultResponseHeaders = PREFIX + ".resHeaders.omo";

 

 	/**

 	 * Configuration property:  Compression encoders.

@@ -2302,6 +2127,205 @@
 	public static final String REST_renderResponseStackTraces = PREFIX + ".renderResponseStackTraces.b";

 

 	/**

+	 * Configuration property:  Default request attributes.

+	 *

+	 * <h5 class='section'>Property:</h5>

+	 * <ul>

+	 * 	<li><b>Name:</b>  <js>"RestContext.reqAttrs.smo"</js>

+	 * 	<li><b>Data type:</b>  <c>Map&lt;String,Object&gt;</c>

+	 * 	<li><b>Default:</b>  empty map

+	 * 	<li><b>Session property:</b>  <jk>false</jk>

+	 * 	<li><b>Annotations:</b>

+	 * 		<ul>

+	 * 			<li class='ja'>{@link Rest#reqAttrs()}

+	 * 			<li class='ja'>{@link RestMethod#reqAttrs()}

+	 * 		</ul>

+	 * 	<li><b>Methods:</b>

+	 * 		<ul>

+	 * 			<li class='jm'>{@link RestContextBuilder#reqAttrs(String...)}

+	 * 			<li class='jm'>{@link RestContextBuilder#reqAttr(String,Object)}

+	 * 		</ul>

+	 * </ul>

+	 *

+	 * <h5 class='section'>Description:</h5>

+	 * <p>

+	 * Specifies default values for request attributes if they're not already set on the request.

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Strings are in the format <js>"Name: value"</js>.

+	 * 	<li>

+	 * 		Affects values returned by the following methods:

+	 * 		<ul>

+	 * 			<li class='jm'>{@link RestRequest#getAttribute(String)}.

+	 * 			<li class='jm'>{@link RestRequest#getAttributes()}.

+	 * 		</ul>

+	 * </ul>

+	 *

+	 * <h5 class='section'>Example:</h5>

+	 * <p class='bcode w800'>

+	 * 	<jc>// Option #1 - Defined via annotation resolving to a config file setting with default value.</jc>

+	 * 	<ja>@Rest</ja>(reqAttrs={<js>"Foo: bar"</js>, <js>"Baz: $C{REST/myAttributeValue}"</js>})

+	 * 	<jk>public class</jk> MyResource {

+	 *

+	 * 		<jc>// Option #2 - Defined via builder passed in through resource constructor.</jc>

+	 * 		<jk>public</jk> MyResource(RestContextBuilder builder) <jk>throws</jk> Exception {

+	 *

+	 * 			<jc>// Using method on builder.</jc>

+	 * 			builder

+	 * 				.attr(<js>"Foo"</js>, <js>"bar"</js>);

+	 * 				.attr(<js>"Baz: true"</js>);

+	 *

+	 * 			<jc>// Same, but using property.</jc>

+	 * 			builder.addTo(<jsf>REST_reqAttrs</jsf>, <js>"Foo"</js>, <js>"bar"</js>);

+	 * 		}

+	 *

+	 * 		<jc>// Option #3 - Defined via builder passed in through init method.</jc>

+	 * 		<ja>@RestHook</ja>(<jsf>INIT</jsf>)

+	 * 		<jk>public void</jk> init(RestContextBuilder builder) <jk>throws</jk> Exception {

+	 * 			builder.reqAttr(<js>"Foo"</js>, <js>"bar"</js>);

+	 * 		}

+	 *

+	 * 		<jc>// Override at the method level.</jc>

+	 * 		<ja>@RestMethod</ja>(reqAttrs={<js>"Foo: bar"</js>})

+	 * 		public Object myMethod() {...}

+	 * 	}

+	 * </p>

+	 */

+	public static final String REST_reqAttrs = PREFIX + ".reqAttrs.smo";

+

+	/**

+	 * Configuration property:  Default request headers.

+	 *

+	 * <h5 class='section'>Property:</h5>

+	 * <ul>

+	 * 	<li><b>Name:</b>  <js>"RestContext.reqHeaders.smo"</js>

+	 * 	<li><b>Data type:</b>  <c>Map&lt;String,String&gt;</c>

+	 * 	<li><b>Default:</b>  empty map

+	 * 	<li><b>Session property:</b>  <jk>false</jk>

+	 * 	<li><b>Annotations:</b>

+	 * 		<ul>

+	 * 			<li class='ja'>{@link Rest#reqHeaders()}

+	 * 			<li class='ja'>{@link RestMethod#reqHeaders()}

+	 * 		</ul>

+	 * 	<li><b>Methods:</b>

+	 * 		<ul>

+	 * 			<li class='jm'>{@link RestContextBuilder#reqHeader(String,Object)}

+	 * 			<li class='jm'>{@link RestContextBuilder#reqHeaders(String...)}

+	 * 		</ul>

+	 * </ul>

+	 *

+	 * <h5 class='section'>Description:</h5>

+	 * <p>

+	 * Specifies default values for request headers if they're not passed in through the request.

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Strings are in the format <js>"Header-Name: header-value"</js>.

+	 * 	<li>

+	 * 		Affects values returned by {@link RestRequest#getHeader(String)} when the header is not present on the request.

+	 * 	<li>

+	 * 		The most useful reason for this annotation is to provide a default <c>Accept</c> header when one is not

+	 * 		specified so that a particular default {@link Serializer} is picked.

+	 * </ul>

+	 *

+	 * <h5 class='section'>Example:</h5>

+	 * <p class='bcode w800'>

+	 * 	<jc>// Option #1 - Defined via annotation resolving to a config file setting with default value.</jc>

+	 * 	<ja>@Rest</ja>(reqHeaders={<js>"Accept: application/json"</js>, <js>"My-Header: $C{REST/myHeaderValue}"</js>})

+	 * 	<jk>public class</jk> MyResource {

+	 *

+	 * 		<jc>// Option #2 - Defined via builder passed in through resource constructor.</jc>

+	 * 		<jk>public</jk> MyResource(RestContextBuilder builder) <jk>throws</jk> Exception {

+	 *

+	 * 			<jc>// Using method on builder.</jc>

+	 * 			builder

+	 * 				.reqHeader(<js>"Accept"</js>, <js>"application/json"</js>);

+	 * 				.reqHeaders(<js>"My-Header: foo"</js>);

+	 *

+	 * 			<jc>// Same, but using property.</jc>

+	 * 			builder.addTo(<jsf>REST_reqHeaders</jsf>, <js>"Accept"</js>, <js>"application/json"</js>);

+	 * 		}

+	 *

+	 * 		<jc>// Option #3 - Defined via builder passed in through init method.</jc>

+	 * 		<ja>@RestHook</ja>(<jsf>INIT</jsf>)

+	 * 		<jk>public void</jk> init(RestContextBuilder builder) <jk>throws</jk> Exception {

+	 * 			builder.reqHeader(<js>"Accept"</js>, <js>"application/json"</js>);

+	 * 		}

+	 *

+	 * 		<jc>// Override at the method level.</jc>

+	 * 		<ja>@RestMethod</ja>(reqHeaders={<js>"Accept: text/xml"</js>})

+	 * 		public Object myMethod() {...}

+	 * 	}

+	 * </p>

+	 */

+	public static final String REST_reqHeaders = PREFIX + ".reqHeaders.smo";

+

+	/**

+	 * Configuration property:  Default response headers.

+	 *

+	 * <h5 class='section'>Property:</h5>

+	 * <ul>

+	 * 	<li><b>Name:</b>  <js>"RestContext.resHeaders.omo"</js>

+	 * 	<li><b>Data type:</b>  <c>Map&lt;String,String&gt;</c>

+	 * 	<li><b>Default:</b>  empty map

+	 * 	<li><b>Session property:</b>  <jk>false</jk>

+	 * 	<li><b>Annotations:</b>

+	 * 		<ul>

+	 * 			<li class='ja'>{@link Rest#resHeaders()}

+	 * 		</ul>

+	 * 	<li><b>Methods:</b>

+	 * 		<ul>

+	 * 			<li class='jm'>{@link RestContextBuilder#resHeader(String,Object)}

+	 * 			<li class='jm'>{@link RestContextBuilder#resHeaders(String...)}

+	 * 		</ul>

+	 * </ul>

+	 *

+	 * <h5 class='section'>Description:</h5>

+	 * <p>

+	 * Specifies default values for response headers if they're not set after the Java REST method is called.

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Strings are in the format <js>"Header-Name: header-value"</js>.

+	 * 	<li>

+	 * 		This is equivalent to calling {@link RestResponse#setHeader(String, String)} programmatically in each of

+	 * 		the Java methods.

+	 * 	<li>

+	 * 		The header value will not be set if the header value has already been specified (hence the 'default' in the name).

+	 * </ul>

+	 *

+	 * <h5 class='section'>Example:</h5>

+	 * <p class='bcode w800'>

+	 * 	<jc>// Option #1 - Defined via annotation resolving to a config file setting with default value.</jc>

+	 * 	<ja>@Rest</ja>(resHeaders={<js>"Content-Type: $C{REST/defaultContentType,text/plain}"</js>,<js>"My-Header: $C{REST/myHeaderValue}"</js>})

+	 * 	<jk>public class</jk> MyResource {

+	 *

+	 * 		<jc>// Option #2 - Defined via builder passed in through resource constructor.</jc>

+	 * 		<jk>public</jk> MyResource(RestContextBuilder builder) <jk>throws</jk> Exception {

+	 *

+	 * 			<jc>// Using method on builder.</jc>

+	 * 			builder

+	 * 				.resHeader(<js>"Content-Type"</js>, <js>"text/plain"</js>);

+	 * 				.resHeaders(<js>"My-Header: foo"</js>);

+	 *

+	 * 			<jc>// Same, but using property.</jc>

+	 * 			builder

+	 * 				.addTo(<jsf>REST_resHeaders</jsf>, <js>"Accept"</js>, <js>"application/json"</js>);

+	 * 				.addTo(<jsf>REST_resHeaders</jsf>, <js>"My-Header"</js>, <js>"foo"</js>);

+	 * 		}

+	 *

+	 * 		<jc>// Option #3 - Defined via builder passed in through init method.</jc>

+	 * 		<ja>@RestHook</ja>(<jsf>INIT</jsf>)

+	 * 		<jk>public void</jk> init(RestContextBuilder builder) <jk>throws</jk> Exception {

+	 * 			builder.resHeader(<js>"Content-Type"</js>, <js>"text/plain"</js>);

+	 * 		}

+	 * 	}

+	 * </p>

+	 */

+	public static final String REST_resHeaders = PREFIX + ".resHeaders.omo";

+

+	/**

 	 * Configuration property:  REST resource resolver.

 	 *

 	 * <h5 class='section'>Property:</h5>

@@ -3537,10 +3561,10 @@
 		consumes,

 		produces;

 	private final Map<String,Object>

-		defaultRequestHeaders,

-		defaultResponseHeaders,

+		reqHeaders,

+		resHeaders,

 		staticFileResponseHeaders;

-	private final ObjectMap defaultRequestAttributes;

+	private final ObjectMap reqAttrs;

 	private final ResponseHandler[] responseHandlers;

 	private final MimetypesFileTypeMap mimetypesFileTypeMap;

 	private final StaticFiles[] staticFiles;

@@ -3683,12 +3707,12 @@
 				_paramResolvers.put(rp.forClass(), rp);

 			paramResolvers = unmodifiableMap(_paramResolvers);

 

-			Map<String,Object> _defaultRequestHeaders = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);

-			_defaultRequestHeaders.putAll(getMapProperty(REST_defaultRequestHeaders, String.class));

-			defaultRequestHeaders = unmodifiableMap(new LinkedHashMap<>(_defaultRequestHeaders));

+			Map<String,Object> _reqHeaders = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);

+			_reqHeaders.putAll(getMapProperty(REST_reqHeaders, String.class));

+			reqHeaders = unmodifiableMap(new LinkedHashMap<>(_reqHeaders));

 

-			defaultRequestAttributes = new ObjectMap(getMapProperty(REST_attrs, Object.class)).unmodifiable();

-			defaultResponseHeaders = getMapProperty(REST_defaultResponseHeaders, Object.class);

+			reqAttrs = new ObjectMap(getMapProperty(REST_reqAttrs, Object.class)).unmodifiable();

+			resHeaders = getMapProperty(REST_resHeaders, Object.class);

 			staticFileResponseHeaders = getMapProperty(REST_staticFileResponseHeaders, Object.class);

 

 			logger = getInstanceProperty(REST_logger, resource, RestLogger.class, NoOpRestLogger.class, resourceResolver, this);

@@ -4841,45 +4865,45 @@
 	 * Returns the default request headers for this resource.

 	 *

 	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}

+	 * 	<li class='jf'>{@link RestContext#REST_reqHeaders}

 	 * </ul>

 	 *

 	 * @return

 	 * 	The default request headers for this resource.

 	 * 	<br>Never <jk>null</jk>.

 	 */

-	public Map<String,Object> getDefaultRequestHeaders() {

-		return defaultRequestHeaders;

+	public Map<String,Object> getReqHeaders() {

+		return reqHeaders;

 	}

 

 	/**

-	 * Returns the default request headers for this resource.

+	 * Returns the default request attributes for this resource.

 	 *

 	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}

+	 * 	<li class='jf'>{@link RestContext#REST_reqAttrs}

 	 * </ul>

 	 *

 	 * @return

 	 * 	The default request headers for this resource.

 	 * 	<br>Never <jk>null</jk>.

 	 */

-	public ObjectMap getDefaultRequestAttributes() {

-		return defaultRequestAttributes;

+	public ObjectMap getReqAttrs() {

+		return reqAttrs;

 	}

 

 	/**

 	 * Returns the default response headers for this resource.

 	 *

 	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultResponseHeaders}

+	 * 	<li class='jf'>{@link RestContext#REST_resHeaders}

 	 * </ul>

 	 *

 	 * @return

 	 * 	The default response headers for this resource.

 	 * 	<br>Never <jk>null</jk>.

 	 */

-	public Map<String,Object> getDefaultResponseHeaders() {

-		return defaultResponseHeaders;

+	public Map<String,Object> getResHeaders() {

+		return resHeaders;

 	}

 

 	/**

@@ -5299,8 +5323,6 @@
 				.append("callHandler", callHandler)

 				.append("clientVersionHeader", clientVersionHeader)

 				.append("consumes", consumes)

-				.append("defaultRequestHeaders", defaultRequestHeaders)

-				.append("defaultResponseHeaders", defaultResponseHeaders)

 				.append("infoProvider", infoProvider)

 				.append("logger", logger)

 				.append("paramResolvers", paramResolvers)

@@ -5310,6 +5332,8 @@
 				.append("produces", produces)

 				.append("properties", properties)

 				.append("renderResponseStackTraces", renderResponseStackTraces)

+				.append("reqHeaders", reqHeaders)

+				.append("resHeaders", resHeaders)

 				.append("resourceResolver", resourceResolver)

 				.append("responseHandlers", responseHandlers)

 				.append("serializers", serializers)

diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 0610221..fcc7a38 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -869,50 +869,24 @@
 
 	/**
 	 * Configuration property:  Default request attributes.
-	 *
-	 * <p>
-	 * Specifies default values for request attributes if they're not already set on the request.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_attrs}
-	 * </ul>
-	 *
-	 * @param values The attributes in the format <js>"Name: value"</js>.
-	 * @return This object (for method chaining).
-	 * @throws RestServletException If malformed header is found.
+	 * 
+	 * @deprecated Use {@link #reqAttrs(String...)}
 	 */
+	@SuppressWarnings("javadoc")
+	@Deprecated
 	public RestContextBuilder attrs(String...values) throws RestServletException {
-		for (String v : values) {
-			String[] p = RestUtils.parseKeyValuePair(v);
-			if (p == null)
-				throw new RestServletException("Invalid default request attribute specified: ''{0}''.  Must be in the format: ''Name: value''", v);
-			defaultRequestHeader(p[0], p[1]);
-		}
-		return this;
+		return reqAttrs(values);
 	}
 
 	/**
 	 * Configuration property:  Default request headers.
-	 *
-	 * <p>
-	 * Specifies default values for request headers if they're not passed in through the request.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}
-	 * </ul>
-	 *
-	 * @param headers The headers in the format <js>"Header-Name: header-value"</js>.
-	 * @return This object (for method chaining).
-	 * @throws RestServletException If malformed header is found.
+	 * 
+	 * @deprecated Use {@link #reqHeaders(String...)}
 	 */
+	@SuppressWarnings("javadoc")
+	@Deprecated
 	public RestContextBuilder defaultRequestHeaders(String...headers) throws RestServletException {
-		for (String header : headers) {
-			String[] h = RestUtils.parseHeader(header);
-			if (h == null)
-				throw new RestServletException("Invalid default request header specified: ''{0}''.  Must be in the format: ''Header-Name: header-value''", header);
-			defaultRequestHeader(h[0], h[1]);
-		}
-		return this;
+		return reqHeaders(headers);
 	}
 
 	/**
@@ -925,7 +899,7 @@
 	 */
 	public RestContextBuilder defaultAccept(String value) {
 		if (isNotEmpty(value))
-			defaultRequestHeader("Accept", value);
+			reqHeader("Accept", value);
 		return this;
 	}
 
@@ -939,86 +913,52 @@
 	 */
 	public RestContextBuilder defaultContentType(String value) {
 		if (isNotEmpty(value))
-			defaultRequestHeader("Content-Type", value);
+			reqHeader("Content-Type", value);
 		return this;
 	}
 
 	/**
 	 * Configuration property:  Default request attribute.
 	 *
-	 * <p>
-	 * Same as {@link #attrs(String...)} but adds a single attribute name/value pair.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_attrs}
-	 * </ul>
-	 *
-	 * @param name The HTTP header name.
-	 * @param value The HTTP header value.
-	 * @return This object (for method chaining).
+	 * @deprecated Use {@link #reqAttr(String, Object)}
 	 */
+	@SuppressWarnings("javadoc")
+	@Deprecated
 	public RestContextBuilder attr(String name, Object value) {
-		return addTo(REST_attrs, name, value);
+		return reqAttr(name, value);
 	}
 
 	/**
 	 * Configuration property:  Default request headers.
-	 *
-	 * <p>
-	 * Same as {@link #defaultRequestHeaders(String...)} but adds a single header name/value pair.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}
-	 * </ul>
-	 *
-	 * @param name The HTTP header name.
-	 * @param value The HTTP header value.
-	 * @return This object (for method chaining).
+	 * 
+	 * @deprecated Use {@link #reqHeader(String,Object)}
 	 */
+	@SuppressWarnings("javadoc")
+	@Deprecated
 	public RestContextBuilder defaultRequestHeader(String name, Object value) {
-		return addTo(REST_defaultRequestHeaders, name, value);
+		return reqHeader(name, value);
 	}
 
 	/**
 	 * Configuration property:  Default response headers.
 	 *
-	 * <p>
-	 * Specifies default values for response headers if they're not set after the Java REST method is called.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_defaultResponseHeaders}
-	 * </ul>
-	 *
-	 * @param headers The headers in the format <js>"Header-Name: header-value"</js>.
-	 * @return This object (for method chaining).
-	 * @throws RestServletException If malformed header is found.
+	 * @deprecated Use {@link #resHeaders(String...)}
 	 */
+	@SuppressWarnings("javadoc")
+	@Deprecated
 	public RestContextBuilder defaultResponseHeaders(String...headers) throws RestServletException {
-		for (String header : headers) {
-			String[] h = RestUtils.parseHeader(header);
-			if (h == null)
-				throw new RestServletException("Invalid default response header specified: ''{0}''.  Must be in the format: ''Header-Name: header-value''", header);
-			defaultResponseHeader(h[0], h[1]);
-		}
-		return this;
+		return resHeaders(headers);
 	}
 
 	/**
 	 * Configuration property:  Default response headers.
 	 *
-	 * <p>
-	 * Same as {@link #defaultResponseHeaders(String...)} but adds a single header name/value pair.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_defaultResponseHeaders}
-	 * </ul>
-	 *
-	 * @param name The HTTP header name.
-	 * @param value The HTTP header value.
-	 * @return This object (for method chaining).
+	 * @deprecated Use {@link #resHeader(String, Object)}
 	 */
+	@SuppressWarnings("javadoc")
+	@Deprecated
 	public RestContextBuilder defaultResponseHeader(String name, Object value) {
-		return addTo(REST_defaultResponseHeaders, name, value);
+		return resHeader(name, value);
 	}
 
 	/**
@@ -1510,6 +1450,132 @@
 	}
 
 	/**
+	 * Configuration property:  Default request attribute.
+	 *
+	 * <p>
+	 * Same as {@link #reqAttrs(String...)} but adds a single attribute name/value pair.
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_reqAttrs}
+	 * </ul>
+	 *
+	 * @param name The HTTP header name.
+	 * @param value The HTTP header value.
+	 * @return This object (for method chaining).
+	 */
+	public RestContextBuilder reqAttr(String name, Object value) {
+		return addTo(REST_reqAttrs, name, value);
+	}
+
+	/**
+	 * Configuration property:  Default request attributes.
+	 *
+	 * <p>
+	 * Specifies default values for request attributes if they're not already set on the request.
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_reqAttrs}
+	 * </ul>
+	 *
+	 * @param values The attributes in the format <js>"Name: value"</js>.
+	 * @return This object (for method chaining).
+	 * @throws RestServletException If malformed header is found.
+	 */
+	public RestContextBuilder reqAttrs(String...values) throws RestServletException {
+		for (String v : values) {
+			String[] p = RestUtils.parseKeyValuePair(v);
+			if (p == null)
+				throw new RestServletException("Invalid default request attribute specified: ''{0}''.  Must be in the format: ''Name: value''", v);
+			reqHeader(p[0], p[1]);
+		}
+		return this;
+	}
+
+	/**
+	 * Configuration property:  Default request headers.
+	 *
+	 * <p>
+	 * Same as {@link #reqHeaders(String...)} but adds a single header name/value pair.
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_reqHeaders}
+	 * </ul>
+	 *
+	 * @param name The HTTP header name.
+	 * @param value The HTTP header value.
+	 * @return This object (for method chaining).
+	 */
+	public RestContextBuilder reqHeader(String name, Object value) {
+		return addTo(REST_reqHeaders, name, value);
+	}
+
+	/**
+	 * Configuration property:  Default request headers.
+	 *
+	 * <p>
+	 * Specifies default values for request headers if they're not passed in through the request.
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_reqHeaders}
+	 * </ul>
+	 *
+	 * @param headers The headers in the format <js>"Header-Name: header-value"</js>.
+	 * @return This object (for method chaining).
+	 * @throws RestServletException If malformed header is found.
+	 */
+	public RestContextBuilder reqHeaders(String...headers) throws RestServletException {
+		for (String header : headers) {
+			String[] h = RestUtils.parseHeader(header);
+			if (h == null)
+				throw new RestServletException("Invalid default request header specified: ''{0}''.  Must be in the format: ''Header-Name: header-value''", header);
+			reqHeader(h[0], h[1]);
+		}
+		return this;
+	}
+
+	/**
+	 * Configuration property:  Default response headers.
+	 *
+	 * <p>
+	 * Specifies default values for response headers if they're not set after the Java REST method is called.
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_resHeaders}
+	 * </ul>
+	 *
+	 * @param headers The headers in the format <js>"Header-Name: header-value"</js>.
+	 * @return This object (for method chaining).
+	 * @throws RestServletException If malformed header is found.
+	 */
+	public RestContextBuilder resHeaders(String...headers) throws RestServletException {
+		for (String header : headers) {
+			String[] h = RestUtils.parseHeader(header);
+			if (h == null)
+				throw new RestServletException("Invalid default response header specified: ''{0}''.  Must be in the format: ''Header-Name: header-value''", header);
+			resHeader(h[0], h[1]);
+		}
+		return this;
+	}
+
+	/**
+	 * Configuration property:  Default response headers.
+	 *
+	 * <p>
+	 * Same as {@link #resHeaders(String...)} but adds a single header name/value pair.
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_resHeaders}
+	 * </ul>
+	 *
+	 * @param name The HTTP header name.
+	 * @param value The HTTP header value.
+	 * @return This object (for method chaining).
+	 */
+	public RestContextBuilder resHeader(String name, Object value) {
+		return addTo(REST_resHeaders, name, value);
+	}
+
+	/**
 	 * REST resource resolver.
 	 *
 	 * <p>
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
index 8fa25a4..e9b1c1c 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContext.java
@@ -67,43 +67,11 @@
 
 	/**
 	 * Configuration property:  Default request attributes.
-	 *
-	 * <h5 class='section'>Property:</h5>
-	 * <ul>
-	 * 	<li><b>Name:</b>  <js>"RestMethodContext.defaultRequestAttributes.smo"</js>
-	 * 	<li><b>Data type:</b>  <c>Map&lt;String,Object&gt;</c>
-	 * 	<li><b>Default:</b>  <jk>null</jk>
-	 * 	<li><b>Session property:</b>  <jk>false</jk>
-	 * 	<li><b>Annotations:</b>
-	 * 		<ul>
-	 * 			<li class='ja'>{@link RestMethod#attrs()}
-	 * 		</ul>
-	 * </ul>
-	 *
-	 * <h5 class='section'>Description:</h5>
-	 * Default request attributes.
-	 *
-	 * <p>
-	 * Specifies default values for request attributes if they are not already set on the request.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, defaultRequestAttributes={<js>"Foo: bar"</js>})
-	 * 	<jk>public</jk> String doGet()  {...}
-	 * </p>
-	 *
-	 * <ul class='notes'>
-	 * 	<li>
-	 * 		Supports {@doc DefaultRestSvlVariables}
-	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).
-	 * </ul>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_attrs}
-	 * </ul>
+	 * 
+	 * @deprecated Use {@link #RESTMETHOD_reqAttrs}
 	 */
-	public static final String RESTMETHOD_attrs = PREFIX + ".attrs.smo";
+	@Deprecated
+	public static final String RESTMETHOD_attrs = PREFIX + ".reqAttrs.smo";
 
 	/**
 	 * Configuration property:  Client version pattern matcher.
@@ -274,45 +242,11 @@
 
 	/**
 	 * Configuration property:  Default request headers.
-	 *
-	 * <h5 class='section'>Property:</h5>
-	 * <ul>
-	 * 	<li><b>Name:</b>  <js>"RestMethodContext.defaultRequestHeaders.smo"</js>
-	 * 	<li><b>Data type:</b>  <c>Map&lt;String,Object&gt;</c>
-	 * 	<li><b>Default:</b>  <jk>null</jk>
-	 * 	<li><b>Session property:</b>  <jk>false</jk>
-	 * 	<li><b>Annotations:</b>
-	 * 		<ul>
-	 * 			<li class='ja'>{@link RestMethod#defaultRequestHeaders()}
-	 * 			<li class='ja'>{@link RestMethod#defaultAccept()}
-	 * 			<li class='ja'>{@link RestMethod#defaultContentType()}
-	 * 		</ul>
-	 * </ul>
-	 *
-	 * <h5 class='section'>Description:</h5>
-	 * Default request headers.
-	 *
-	 * <p>
-	 * Specifies default values for request headers if they're not passed in through the request.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, defaultRequestHeaders={<js>"Accept: text/json"</js>})
-	 * 	<jk>public</jk> String doGet()  {...}
-	 * </p>
-	 *
-	 * <ul class='notes'>
-	 * 	<li>
-	 * 		Supports {@doc DefaultRestSvlVariables}
-	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).
-	 * </ul>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}
-	 * </ul>
+	 * 
+	 * @deprecated Use {@link #RESTMETHOD_defaultRequestHeaders}
 	 */
-	public static final String RESTMETHOD_defaultRequestHeaders = PREFIX + ".defaultRequestHeaders.smo";
+	@Deprecated
+	public static final String RESTMETHOD_defaultRequestHeaders = PREFIX + ".reqHeaders.smo";
 
 	/**
 	 * Configuration property:  HTTP method name.
@@ -491,6 +425,88 @@
 	 */
 	public static final String RESTMETHOD_priority = PREFIX + ".priority.i";
 
+	/**
+	 * Configuration property:  Default request attributes.
+	 *
+	 * <h5 class='section'>Property:</h5>
+	 * <ul>
+	 * 	<li><b>Name:</b>  <js>"RestMethodContext.reqAttrs.smo"</js>
+	 * 	<li><b>Data type:</b>  <c>Map&lt;String,Object&gt;</c>
+	 * 	<li><b>Default:</b>  <jk>null</jk>
+	 * 	<li><b>Session property:</b>  <jk>false</jk>
+	 * 	<li><b>Annotations:</b>
+	 * 		<ul>
+	 * 			<li class='ja'>{@link RestMethod#reqAttrs()}
+	 * 		</ul>
+	 * </ul>
+	 *
+	 * <h5 class='section'>Description:</h5>
+	 * Default request attributes.
+	 *
+	 * <p>
+	 * Specifies default values for request attributes if they are not already set on the request.
+	 *
+	 * <h5 class='section'>Example:</h5>
+	 * <p class='bcode w800'>
+	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>
+	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, reqAttrs={<js>"Foo: bar"</js>})
+	 * 	<jk>public</jk> String doGet()  {...}
+	 * </p>
+	 *
+	 * <ul class='notes'>
+	 * 	<li>
+	 * 		Supports {@doc DefaultRestSvlVariables}
+	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).
+	 * </ul>
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_reqAttrs}
+	 * </ul>
+	 */
+	public static final String RESTMETHOD_reqAttrs = PREFIX + ".reqAttrs.smo";
+
+	/**
+	 * Configuration property:  Default request headers.
+	 *
+	 * <h5 class='section'>Property:</h5>
+	 * <ul>
+	 * 	<li><b>Name:</b>  <js>"RestMethodContext.reqHeaders.smo"</js>
+	 * 	<li><b>Data type:</b>  <c>Map&lt;String,Object&gt;</c>
+	 * 	<li><b>Default:</b>  <jk>null</jk>
+	 * 	<li><b>Session property:</b>  <jk>false</jk>
+	 * 	<li><b>Annotations:</b>
+	 * 		<ul>
+	 * 			<li class='ja'>{@link RestMethod#reqHeaders()}
+	 * 			<li class='ja'>{@link RestMethod#defaultAccept()}
+	 * 			<li class='ja'>{@link RestMethod#defaultContentType()}
+	 * 		</ul>
+	 * </ul>
+	 *
+	 * <h5 class='section'>Description:</h5>
+	 * Default request headers.
+	 *
+	 * <p>
+	 * Specifies default values for request headers if they're not passed in through the request.
+	 *
+	 * <h5 class='section'>Example:</h5>
+	 * <p class='bcode w800'>
+	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>
+	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, reqHeaders={<js>"Accept: text/json"</js>})
+	 * 	<jk>public</jk> String doGet()  {...}
+	 * </p>
+	 *
+	 * <ul class='notes'>
+	 * 	<li>
+	 * 		Supports {@doc DefaultRestSvlVariables}
+	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).
+	 * </ul>
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jf'>{@link RestContext#REST_reqHeaders}
+	 * </ul>
+	 */
+	public static final String RESTMETHOD_reqHeaders = PREFIX + ".reqHeaders.smo";
+
 	//-------------------------------------------------------------------------------------------------------------------
 	// Instance
 	//-------------------------------------------------------------------------------------------------------------------
@@ -515,10 +531,10 @@
 	final HttpPartParser partParser;
 	final JsonSchemaGenerator jsonSchemaGenerator;
 	final Map<String,Object>
-		defaultRequestHeaders,
+		reqHeaders,
 		defaultQuery,
 		defaultFormData;
-	final ObjectMap defaultRequestAttributes;
+	final ObjectMap reqAttrs;
 	final String defaultCharset;
 	final long maxInput;
 	final Map<String,Widget> widgets;
@@ -625,10 +641,10 @@
 
 		this.jsonSchemaGenerator = JsonSchemaGenerator.create().apply(ps).build();
 
-		Map<String,Object> _defaultRequestHeaders = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
-		_defaultRequestHeaders.putAll(getMapProperty(RESTMETHOD_defaultRequestHeaders, Object.class));
+		Map<String,Object> _reqHeaders = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+		_reqHeaders.putAll(getMapProperty(RESTMETHOD_reqHeaders, Object.class));
 
-		ObjectMap _defaultRequestAttributes = new ObjectMap(context.getDefaultRequestAttributes()).appendAll(getMapProperty(RESTMETHOD_attrs, Object.class));
+		ObjectMap _reqAttrs = new ObjectMap(context.getReqAttrs()).appendAll(getMapProperty(RESTMETHOD_reqAttrs, Object.class));
 
 		Map<String,Object> _defaultQuery = new LinkedHashMap<>(getMapProperty(RESTMETHOD_defaultQuery, Object.class));
 
@@ -642,7 +658,7 @@
 					Header h = (Header)a;
 					if (h._default().length > 0) {
 						try {
-							_defaultRequestHeaders.put(firstNonEmpty(h.name(), h.value()), parseAnything(joinnl(h._default())));
+							_reqHeaders.put(firstNonEmpty(h.name(), h.value()), parseAnything(joinnl(h._default())));
 						} catch (ParseException e) {
 							throw new ConfigException(e, "Malformed @Header annotation");
 						}
@@ -669,8 +685,8 @@
 			}
 		}
 
-		this.defaultRequestHeaders = Collections.unmodifiableMap(_defaultRequestHeaders);
-		this.defaultRequestAttributes = _defaultRequestAttributes.unmodifiable();
+		this.reqHeaders = Collections.unmodifiableMap(_reqHeaders);
+		this.reqAttrs = _reqAttrs.unmodifiable();
 		this.defaultQuery = Collections.unmodifiableMap(_defaultQuery);
 		this.defaultFormData = Collections.unmodifiableMap(_defaultFormData);
 
@@ -1026,7 +1042,7 @@
 			.append("RestMethodContext", new DefaultFilteringObjectMap()
 				.append("defaultFormData", defaultFormData)
 				.append("defaultQuery", defaultQuery)
-				.append("defaultRequestHeaders", defaultRequestHeaders)
+				.append("reqHeaders", reqHeaders)
 				.append("httpMethod", httpMethod)
 				.append("priority", priority)
 			);
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index a7cfcf0..d7d0006 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -111,7 +111,7 @@
 	private UriContext uriContext;

 	private String charset, authorityPath;

 	private RequestHeaders headers;

-	private RequestAttributes attributes;

+	private RequestAttributes attrs;

 	private Config cf;

 	private Swagger swagger;

 	private SerializerSessionArgs serializerSessionArgs;

@@ -198,10 +198,10 @@
 			.addDefault(rjm.defaultQuery)

 			.parser(rjm.partParser);

 		this.headers

-			.addDefault(rjm.defaultRequestHeaders)

-			.addDefault(context.getDefaultRequestHeaders())

+			.addDefault(rjm.reqHeaders)

+			.addDefault(context.getReqHeaders())

 			.parser(rjm.partParser);

-		this.attributes = new RequestAttributes(this, rjm.defaultRequestAttributes);

+		this.attrs = new RequestAttributes(this, rjm.reqAttrs);

 		this.body

 			.encoders(rjm.encoders)

 			.parsers(rjm.parsers)

@@ -510,7 +510,7 @@
 	 * 	<br>Never <jk>null</jk>.

 	 */

 	public RequestAttributes getAttributes() {

-		return attributes;

+		return attrs;

 	}

 

 	/**

@@ -1689,7 +1689,7 @@
 			sb.append("\t").append(h).append(": ").append(getHeader(h)).append("\n");

 		}

 		sb.append("---Default Servlet Headers---\n");

-		for (Map.Entry<String,Object> e : context.getDefaultRequestHeaders().entrySet()) {

+		for (Map.Entry<String,Object> e : context.getReqHeaders().entrySet()) {

 			sb.append("\t").append(e.getKey()).append(": ").append(e.getValue()).append("\n");

 		}

 		if (javaMethod == null) {

diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
index e182d46..a68160c 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -80,7 +80,7 @@
 		this.inner = res;

 		this.request = req;

 

-		for (Map.Entry<String,Object> e : context.getDefaultResponseHeaders().entrySet())

+		for (Map.Entry<String,Object> e : context.getResHeaders().entrySet())

 			setHeaderSafe(e.getKey(), stringify(e.getValue()));

 

 		try {

diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
index 44186de..a710948 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
@@ -151,20 +151,10 @@
 

 	/**

 	 * Default request attributes.

-	 *

-	 * <p>

-	 * Specifies default values for request attributes if they're not already set on the request.

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Supports {@doc DefaultRestSvlVariables}

-	 * 		(e.g. <js>"$L{my.localized.variable}"</js>).

-	 * </ul>

-	 *

-	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_attrs}

-	 * </ul>

+	 * 

+	 * @deprecated Use {@link #reqAttrs()}

 	 */

+	@Deprecated

 	String[] attrs() default {};

 

 	/**

@@ -261,7 +251,7 @@
 	 * The default value for the <c>Accept</c> header if not specified on a request.

 	 *

 	 * <p>

-	 * This is a shortcut for using {@link #defaultRequestHeaders()} for just this specific header.

+	 * This is a shortcut for using {@link #reqHeaders()} for just this specific header.

 	 *

 	 * <ul class='notes'>

 	 * 	<li>

@@ -296,7 +286,7 @@
 	 * The default value for the <c>Content-Type</c> header if not specified on a request.

 	 *

 	 * <p>

-	 * This is a shortcut for using {@link #defaultRequestHeaders()} for just this specific header.

+	 * This is a shortcut for using {@link #reqHeaders()} for just this specific header.

 	 *

 	 * <ul class='notes'>

 	 * 	<li>

@@ -308,38 +298,18 @@
 

 	/**

 	 * Default request headers.

-	 *

-	 * <p>

-	 * Specifies default values for request headers if they're not passed in through the request.

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Supports {@doc DefaultRestSvlVariables}

-	 * 		(e.g. <js>"$L{my.localized.variable}"</js>).

-	 * </ul>

-	 *

-	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}

-	 * </ul>

+	 * 

+	 * @deprecated Use {@link #reqHeaders()}

 	 */

+	@Deprecated

 	String[] defaultRequestHeaders() default {};

 

 	/**

 	 * Default response headers.

-	 *

-	 * <p>

-	 * Specifies default values for response headers if they're not set after the Java REST method is called.

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Supports {@doc DefaultRestSvlVariables}

-	 * 		(e.g. <js>"$L{my.localized.variable}"</js>).

-	 * </ul>

-	 *

-	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultResponseHeaders}

-	 * </ul>

+	 * 

+	 * @deprecated Use {@link #resHeaders()}

 	 */

+	@Deprecated

 	String[] defaultResponseHeaders() default {};

 

 	/**

@@ -719,6 +689,60 @@
 	String renderResponseStackTraces() default "";

 

 	/**

+	 * Default request attributes.

+	 *

+	 * <p>

+	 * Specifies default values for request attributes if they're not already set on the request.

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Supports {@doc DefaultRestSvlVariables}

+	 * 		(e.g. <js>"$L{my.localized.variable}"</js>).

+	 * </ul>

+	 *

+	 * <ul class='seealso'>

+	 * 	<li class='jf'>{@link RestContext#REST_reqAttrs}

+	 * </ul>

+	 */

+	String[] reqAttrs() default {};

+

+	/**

+	 * Default request headers.

+	 *

+	 * <p>

+	 * Specifies default values for request headers if they're not passed in through the request.

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Supports {@doc DefaultRestSvlVariables}

+	 * 		(e.g. <js>"$L{my.localized.variable}"</js>).

+	 * </ul>

+	 *

+	 * <ul class='seealso'>

+	 * 	<li class='jf'>{@link RestContext#REST_reqHeaders}

+	 * </ul>

+	 */

+	String[] reqHeaders() default {};

+

+	/**

+	 * Default response headers.

+	 *

+	 * <p>

+	 * Specifies default values for response headers if they're not set after the Java REST method is called.

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Supports {@doc DefaultRestSvlVariables}

+	 * 		(e.g. <js>"$L{my.localized.variable}"</js>).

+	 * </ul>

+	 *

+	 * <ul class='seealso'>

+	 * 	<li class='jf'>{@link RestContext#REST_resHeaders}

+	 * </ul>

+	 */

+	String[] resHeaders() default {};

+

+	/**

 	 * REST resource resolver.

 	 *

 	 * <p>

diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
index cdcf9e6..e5c3e12 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestConfigApply.java
@@ -48,6 +48,7 @@
 		super(c, r);
 	}
 
+	@SuppressWarnings("deprecation")
 	@Override
 	public void apply(AnnotationInfo<Rest> ai, PropertyStoreBuilder psb) {
 		Rest a = ai.getAnnotation();
@@ -92,6 +93,14 @@
 				psb.addTo(REST_attrs, ra2[0], ra2[1]);
 		}
 
+		for (String ra : strings(a.reqAttrs())) {
+			String[] ra2 = RestUtils.parseKeyValuePair(ra);
+			if (ra2 == null)
+				throw new FormattedRuntimeException("Invalid default request attribute specified: ''{0}''.  Must be in the format: ''Name: value''", ra);
+			if (isNotEmpty(ra2[1]))
+				psb.addTo(REST_reqAttrs, ra2[0], ra2[1]);
+		}
+
 		for (String header : strings(a.defaultRequestHeaders())) {
 			String[] h = RestUtils.parseHeader(header);
 			if (h == null)
@@ -100,16 +109,24 @@
 				psb.addTo(REST_defaultRequestHeaders, h[0], h[1]);
 		}
 
+		for (String header : strings(a.reqHeaders())) {
+			String[] h = RestUtils.parseHeader(header);
+			if (h == null)
+				throw new FormattedRuntimeException("Invalid default request header specified: ''{0}''.  Must be in the format: ''Header-Name: header-value''", header);
+			if (isNotEmpty(h[1]))
+				psb.addTo(REST_reqHeaders, h[0], h[1]);
+		}
+
 		if (a.defaultAccept().length() > 0) {
 			s = string(a.defaultAccept());
 			if (isNotEmpty(s))
-				psb.addTo(REST_defaultRequestHeaders, "Accept", s);
+				psb.addTo(REST_reqHeaders, "Accept", s);
 		}
 
 		if (a.defaultContentType().length() > 0) {
 			s = string(a.defaultContentType());
 			if (isNotEmpty(s))
-				psb.addTo(REST_defaultRequestHeaders, "Content-Type", s);
+				psb.addTo(REST_reqHeaders, "Content-Type", s);
 
 		}
 
@@ -121,6 +138,14 @@
 				psb.addTo(REST_defaultResponseHeaders, h[0], h[1]);
 		}
 
+		for (String header : strings(a.resHeaders())) {
+			String[] h = parseHeader(header);
+			if (h == null)
+				throw new FormattedRuntimeException("Invalid default response header specified: ''{0}''.  Must be in the format: ''Header-Name: header-value''", header);
+			if (isNotEmpty(h[1]))
+				psb.addTo(REST_resHeaders, h[0], h[1]);
+		}
+
 		psb.addTo(REST_responseHandlers, a.responseHandlers());
 
 		psb.addTo(REST_converters, a.converters());
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
index df88cde..d177480 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethod.java
@@ -39,27 +39,10 @@
 

 	/**

 	 * Default request attributes.

-	 *

-	 * <p>

-	 * Specifies default values for request attributes if they're not already set on the request.

-	 *

-	 * <h5 class='section'>Example:</h5>

-	 * <p class='bcode w800'>

-	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>

-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, attrs={<js>"Foo: bar"</js>})

-	 * 	<jk>public</jk> String doGet()  {...}

-	 * </p>

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Supports {@doc DefaultRestSvlVariables}

-	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).

-	 * </ul>

-	 *

-	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_attrs}

-	 * </ul>

+	 * 

+	 * @deprecated Use {@link #reqAttrs()}

 	 */

+	@Deprecated

 	String[] attrs() default {};

 

 	/**

@@ -202,7 +185,7 @@
 	 * The default value for the <c>Accept</c> header if not specified on a request.

 	 *

 	 * <p>

-	 * This is a shortcut for using {@link #defaultRequestHeaders()} for just this specific header.

+	 * This is a shortcut for using {@link #reqHeaders()} for just this specific header.

 	 */

 	String defaultAccept() default "";

 

@@ -231,7 +214,7 @@
 	 * The default value for the <c>Content-Type</c> header if not specified on a request.

 	 *

 	 * <p>

-	 * This is a shortcut for using {@link #defaultRequestHeaders()} for just this specific header.

+	 * This is a shortcut for using {@link #reqHeaders()} for just this specific header.

 	 */

 	String defaultContentType() default "";

 

@@ -292,27 +275,10 @@
 

 	/**

 	 * Default request headers.

-	 *

-	 * <p>

-	 * Specifies default values for request headers if they're not passed in through the request.

-	 *

-	 * <h5 class='section'>Example:</h5>

-	 * <p class='bcode w800'>

-	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>

-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, defaultRequestHeaders={<js>"Accept: text/json"</js>})

-	 * 	<jk>public</jk> String doGet()  {...}

-	 * </p>

-	 *

-	 * <ul class='notes'>

-	 * 	<li>

-	 * 		Supports {@doc DefaultRestSvlVariables}

-	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).

-	 * </ul>

-	 *

-	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}

-	 * </ul>

+	 * 

+	 * @deprecated Use {@link #reqHeaders()}

 	 */

+	@Deprecated

 	String[] defaultRequestHeaders() default {};

 

 	/**

@@ -641,6 +607,56 @@
 	Property[] properties() default {};

 

 	/**

+	 * Default request attributes.

+	 *

+	 * <p>

+	 * Specifies default values for request attributes if they're not already set on the request.

+	 *

+	 * <h5 class='section'>Example:</h5>

+	 * <p class='bcode w800'>

+	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>

+	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, reqAttrs={<js>"Foo: bar"</js>})

+	 * 	<jk>public</jk> String doGet()  {...}

+	 * </p>

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Supports {@doc DefaultRestSvlVariables}

+	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).

+	 * </ul>

+	 *

+	 * <ul class='seealso'>

+	 * 	<li class='jf'>{@link RestContext#REST_reqAttrs}

+	 * </ul>

+	 */

+	String[] reqAttrs() default {};

+

+	/**

+	 * Default request headers.

+	 *

+	 * <p>

+	 * Specifies default values for request headers if they're not passed in through the request.

+	 *

+	 * <h5 class='section'>Example:</h5>

+	 * <p class='bcode w800'>

+	 * 	<jc>// Assume "text/json" Accept value when Accept not specified</jc>

+	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/*"</js>, reqHeaders={<js>"Accept: text/json"</js>})

+	 * 	<jk>public</jk> String doGet()  {...}

+	 * </p>

+	 *

+	 * <ul class='notes'>

+	 * 	<li>

+	 * 		Supports {@doc DefaultRestSvlVariables}

+	 * 		(e.g. <js>"$S{mySystemProperty}"</js>).

+	 * </ul>

+	 *

+	 * <ul class='seealso'>

+	 * 	<li class='jf'>{@link RestContext#REST_reqHeaders}

+	 * </ul>

+	 */

+	String[] reqHeaders() default {};

+

+	/**

 	 * Declared roles.

 	 *

 	 * <p>

diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodConfigApply.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodConfigApply.java
index eb43cff..d466efc 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodConfigApply.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodConfigApply.java
@@ -88,16 +88,24 @@
 				psb.addTo(REST_defaultRequestHeaders, h[0], h[1]);
 		}
 
+		for (String header : strings(a.reqHeaders())) {
+			String[] h = RestUtils.parseHeader(header);
+			if (h == null)
+				throw new ConfigException("Invalid default request header specified on method ''{0}'': ''{1}''.  Must be in the format: ''Header-Name: header-value''", sig, header);
+			if (isNotEmpty(h[1]))
+				psb.addTo(REST_reqHeaders, h[0], h[1]);
+		}
+
 		if (a.defaultAccept().length() > 0) {
 			s = string(a.defaultAccept());
 			if (isNotEmpty(s))
-				psb.addTo(REST_defaultRequestHeaders, "Accept", s);
+				psb.addTo(REST_reqHeaders, "Accept", s);
 		}
 
 		if (a.defaultContentType().length() > 0) {
 			s = string(a.defaultContentType());
 			if (isNotEmpty(s))
-				psb.addTo(REST_defaultRequestHeaders, "Content-Type", s);
+				psb.addTo(REST_reqHeaders, "Content-Type", s);
 		}
 
 		psb.addTo(REST_converters, a.converters());
@@ -167,6 +175,14 @@
 			psb.addTo(RESTMETHOD_defaultRequestHeaders, h2[0], h2[1]);
 		}
 
+		for (String h : a.reqHeaders()) {
+			String[] h2 = RestUtils.parseKeyValuePair(string(h));
+			if (h2 == null)
+				throw new ConfigException(
+					"Invalid default request header specified on method ''{0}'': ''{1}''.  Must be in the format: ''name[:=]value''", sig, s);
+			psb.addTo(RESTMETHOD_reqHeaders, h2[0], h2[1]);
+		}
+
 		for (String ra : a.attrs()) {
 			String[] ra2 = RestUtils.parseKeyValuePair(string(ra));
 			if (ra2 == null)
@@ -175,11 +191,19 @@
 			psb.addTo(RESTMETHOD_attrs, ra2[0], ra2[1]);
 		}
 
+		for (String ra : a.reqAttrs()) {
+			String[] ra2 = RestUtils.parseKeyValuePair(string(ra));
+			if (ra2 == null)
+				throw new ConfigException(
+					"Invalid default request attribute specified on method ''{0}'': ''{1}''.  Must be in the format: ''name[:=]value''", sig, s);
+			psb.addTo(RESTMETHOD_reqAttrs, ra2[0], ra2[1]);
+		}
+
 		if (! a.defaultAccept().isEmpty())
-			psb.addTo(RESTMETHOD_defaultRequestHeaders, "Accept", string(a.defaultAccept()));
+			psb.addTo(RESTMETHOD_reqHeaders, "Accept", string(a.defaultAccept()));
 
 		if (! a.defaultContentType().isEmpty())
-			psb.addTo(RESTMETHOD_defaultRequestHeaders, string(a.defaultContentType()));
+			psb.addTo(RESTMETHOD_reqHeaders, string(a.defaultContentType()));
 
 		for (String h : a.defaultQuery()) {
 			String[] h2 = RestUtils.parseKeyValuePair(string(h));
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
index 072505b..af2b561 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestResource.java
@@ -196,7 +196,7 @@
 	 * </ul>

 	 *

 	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_attrs}

+	 * 	<li class='jf'>{@link RestContext#REST_reqAttrs}

 	 * </ul>

 	 */

 	String[] attrs() default {};

@@ -368,7 +368,7 @@
 	 * </ul>

 	 *

 	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultRequestHeaders}

+	 * 	<li class='jf'>{@link RestContext#REST_reqHeaders}

 	 * </ul>

 	 */

 	String[] defaultRequestHeaders() default {};

@@ -386,7 +386,7 @@
 	 * </ul>

 	 *

 	 * <ul class='seealso'>

-	 * 	<li class='jf'>{@link RestContext#REST_defaultResponseHeaders}

+	 * 	<li class='jf'>{@link RestContext#REST_resHeaders}

 	 * </ul>

 	 */

 	String[] defaultResponseHeaders() default {};