Author: ron.sigal(a)jboss.com
Date: 2008-03-26 01:28:07 -0400 (Wed, 26 Mar 2008)
New Revision: 3776
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java
Log:
JBREM-934: Put Class.getMethod() in AccessController.doPrivileged() calls.
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java
===================================================================
---
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java 2008-03-26
05:27:26 UTC (rev 3775)
+++
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java 2008-03-26
05:28:07 UTC (rev 3776)
@@ -500,7 +500,7 @@
return result;
}
- private void setChunked(Map metadata, HttpURLConnection conn)
+ private void setChunked(Map metadata, final HttpURLConnection conn)
{
String chunkedValue = (String) metadata.get("chunkedLength");
if (chunkedValue != null && chunkedValue.length() > 0)
@@ -515,7 +515,23 @@
*/
try
{
- Method setChunkedLengthMethod =
conn.getClass().getMethod("setChunkedStreamingMode", new Class[]{int.class});
+ Method setChunkedLengthMethod = null;
+
+ try
+ {
+ setChunkedLengthMethod = (Method)AccessController.doPrivileged( new
PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return
conn.getClass().getMethod("setChunkedStreamingMode", new Class[]{int.class});
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (Exception) e.getCause();
+ }
+
setChunkedLengthMethod.invoke(conn, new Object[]{new
Integer(chunkedLength)});
}
catch (NoSuchMethodException e)
@@ -532,6 +548,12 @@
log.error("Error setting http client connection chunked
length.");
log.debug(e);
}
+ catch (Exception e)
+ {
+ // Unexpected.
+ log.error("Unexpected error setting http client connection chunked
length.");
+ log.debug(e);
+ }
}
catch (NumberFormatException e)
{
@@ -725,7 +747,7 @@
*/
try
{
- Class proxyClass = ClassLoaderUtility.loadClass("java.net.Proxy",
HTTPClientInvoker.class);
+ final Class proxyClass =
ClassLoaderUtility.loadClass("java.net.Proxy", HTTPClientInvoker.class);
InetSocketAddress proxyAddress = new InetSocketAddress(proxyHost,
proxyPort);
Class[] decalredClasses = proxyClass.getDeclaredClasses();
Class proxyTypeClass = null;
@@ -753,7 +775,23 @@
}
Constructor proxyConstructor = proxyClass.getConstructor(new Class[]
{proxyTypeClass, SocketAddress.class});
Object proxy = proxyConstructor.newInstance(new Object[] {proxyType,
proxyAddress});
- Method openConnection =
externalURL.getClass().getMethod("openConnection", new Class[] {proxyClass});
+ Method openConnection = null;
+
+ try
+ {
+ openConnection = (Method)AccessController.doPrivileged( new
PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return URL.class.getMethod("openConnection", new Class[]
{proxyClass});
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (Exception) e.getCause();
+ }
+
httpURLConn = (HttpURLConnection)openConnection.invoke(externalURL, new
Object[] {proxy});
}
catch (Exception e)
Show replies by date