Author: markt
Date: Sat Feb 28 19:38:30 2015
New Revision: 1662994
URL: http://svn.apache.org/r1662994
Log:
Remove dependency on SSLServerSocket.getSSLParameters() which is only available
from Java 7 onwards.
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1662994&r1=1662993&r2=1662994&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java
Sat Feb 28 19:38:30 2015
@@ -18,8 +18,6 @@ package org.apache.tomcat.util.net;
import java.io.File;
import java.io.OutputStreamWriter;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.ArrayList;
@@ -30,10 +28,10 @@ import java.util.concurrent.TimeUnit;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLEngine;
-import javax.net.ssl.SSLParameters;
import org.apache.juli.logging.Log;
import org.apache.tomcat.util.IntrospectionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.net.AbstractEndpoint.Acceptor.AcceptorState;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.util.threads.LimitLatch;
@@ -656,15 +654,9 @@ public abstract class AbstractEndpoint<S
private void testServerCipherSuitesOrderSupport() {
// Only test this feature if the user explicitly requested its use.
if(!"".equals(getUseServerCipherSuitesOrder().trim())) {
- try {
- // This method is only available in Java 8+
- // Check to see if the method exists, and then call it.
- SSLParameters.class.getMethod("setUseCipherSuitesOrder",
- Boolean.TYPE);
- }
- catch (NoSuchMethodException nsme) {
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- nsme);
+ if (JreCompat.isJre8Available()) {
+ throw new UnsupportedOperationException(
+
sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"));
}
}
}
@@ -979,36 +971,11 @@ public abstract class AbstractEndpoint<S
// Only use this feature if the user explicitly requested its use.
if(!"".equals(useServerCipherSuitesOrderStr)) {
- SSLParameters sslParameters = engine.getSSLParameters();
boolean useServerCipherSuitesOrder =
("true".equalsIgnoreCase(useServerCipherSuitesOrderStr)
||
"yes".equalsIgnoreCase(useServerCipherSuitesOrderStr));
-
- try {
- // This method is only available in Java 8+
- // Check to see if the method exists, and then call it.
- Method m =
SSLParameters.class.getMethod("setUseCipherSuitesOrder",
- Boolean.TYPE);
-
- m.invoke(sslParameters,
Boolean.valueOf(useServerCipherSuitesOrder));
- }
- catch (NoSuchMethodException nsme) {
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- nsme);
- } catch (InvocationTargetException ite) {
- // Should not happen
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- ite);
- } catch (IllegalArgumentException iae) {
- // Should not happen
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- iae);
- } catch (IllegalAccessException e) {
- // Should not happen
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- e);
- }
- engine.setSSLParameters(sslParameters);
+ JreCompat jreCompat = JreCompat.getInstance();
+ jreCompat.setUseServerCipherSuitesOrder(engine,
useServerCipherSuitesOrder);
}
}
}
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java?rev=1662994&r1=1662993&r2=1662994&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java
Sat Feb 28 19:38:30 2015
@@ -22,8 +22,6 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
@@ -54,7 +52,6 @@ import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.ManagerFactoryParameters;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSession;
@@ -64,6 +61,7 @@ import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509KeyManager;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.Constants;
import org.apache.tomcat.util.net.SSLUtil;
@@ -787,36 +785,11 @@ public class JSSESocketFactory implement
// Only use this feature if the user explicitly requested its use.
if(!"".equals(useServerCipherSuitesOrderStr)) {
- SSLParameters sslParameters = socket.getSSLParameters();
boolean useServerCipherSuitesOrder =
("true".equalsIgnoreCase(useServerCipherSuitesOrderStr)
||
"yes".equalsIgnoreCase(useServerCipherSuitesOrderStr));
-
- try {
- // This method is only available in Java 8+
- // Check to see if the method exists, and then call it.
- Method m =
SSLParameters.class.getMethod("setUseCipherSuitesOrder",
- Boolean.TYPE);
-
- m.invoke(sslParameters,
Boolean.valueOf(useServerCipherSuitesOrder));
- }
- catch (NoSuchMethodException nsme) {
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- nsme);
- } catch (InvocationTargetException ite) {
- // Should not happen
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- ite);
- } catch (IllegalArgumentException iae) {
- // Should not happen
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- iae);
- } catch (IllegalAccessException e) {
- // Should not happen
- throw new
UnsupportedOperationException(sm.getString("endpoint.jsse.cannotHonorServerCipherOrder"),
- e);
- }
- socket.setSSLParameters(sslParameters);
+ JreCompat jreCompat = JreCompat.getInstance();
+ jreCompat.setUseServerCipherSuitesOrder(socket,
useServerCipherSuitesOrder);
}
}
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties?rev=1662994&r1=1662993&r2=1662994&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/jsse/res/LocalStrings.properties
Sat Feb 28 19:38:30 2015
@@ -33,4 +33,3 @@ jseeSupport.certTranslationError=Error t
jsseSupport.noCertWant=No client certificate sent for want
jsseSupport.serverRenegDisabled=SSL server initiated renegotiation is
disabled, closing connection
jsseSupport.unexpectedData=Unexpected data read from input stream
-jsse.cannotHonorServerCipherOrder=Java Runtime does not support
"useServerCipherSuitesOrder". You must use Java 8 or later to use this feature.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]