Franz_Rust
19-06-06, 16:24
Hallo,
ich möchte Informationen von https-Seiten abrufen per Kombination RGP-Java.
Der Aufruf eines Java-Programms aus RPG sollte kein Problem machen. Das Java-Programm auch nicht und es funktioniert auch(siehe Anhang). Eine Abfrage einer Internetseite dauert zwischen 5 und 10 Sekunden.
Nur soll dieses nicht einmal geschehen, sondern viele Male, quasi gleichzeitig.
Starte ich das Programm quasi gleichzeitig bis zu 10 mal, ist unsere AS400 bei einer Auslastung von 100% und die Abfragen dauern in der Summe bis zu einer Minute.
Ich vermute, es liegt am mehrfachen Laden der Virtuelle Java-Maschine.
Hat jemand eine Idee, wie es besser zu machen ist ?
Viele Grüße
Franz Rust
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Security;
import javax.net.SocketFactory;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class TestPerformance2 {
public static void main(String argv[]) throws Exception {
if (argv.length != 1) {
System.out.println("Usage: java HttpsGetTrustAll");
System.exit(0);
}
String URLString = argv[0]; //z.B. https://www.sun.com (https://www.sun.com)
String request = "";
Security.addProvider(new com.ibm.jsse.IBMJSSEProvider());
// Get a Socket factory
SocketFactory factory = SSLSocketFactory.getDefault();
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.g etSocketFactory());
} catch (Exception e) {
}
// Now you can access an https URL without having the certificate in the truststore
try {
URL url = new URL(URLString + request);
BufferedReader in = new BufferedReader(new InputStreamReader(
url.openStream()));
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
System.out.println(sb.toString());
} catch (MalformedURLException e) {
}
}
}
ich möchte Informationen von https-Seiten abrufen per Kombination RGP-Java.
Der Aufruf eines Java-Programms aus RPG sollte kein Problem machen. Das Java-Programm auch nicht und es funktioniert auch(siehe Anhang). Eine Abfrage einer Internetseite dauert zwischen 5 und 10 Sekunden.
Nur soll dieses nicht einmal geschehen, sondern viele Male, quasi gleichzeitig.
Starte ich das Programm quasi gleichzeitig bis zu 10 mal, ist unsere AS400 bei einer Auslastung von 100% und die Abfragen dauern in der Summe bis zu einer Minute.
Ich vermute, es liegt am mehrfachen Laden der Virtuelle Java-Maschine.
Hat jemand eine Idee, wie es besser zu machen ist ?
Viele Grüße
Franz Rust
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Security;
import javax.net.SocketFactory;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class TestPerformance2 {
public static void main(String argv[]) throws Exception {
if (argv.length != 1) {
System.out.println("Usage: java HttpsGetTrustAll");
System.exit(0);
}
String URLString = argv[0]; //z.B. https://www.sun.com (https://www.sun.com)
String request = "";
Security.addProvider(new com.ibm.jsse.IBMJSSEProvider());
// Get a Socket factory
SocketFactory factory = SSLSocketFactory.getDefault();
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.g etSocketFactory());
} catch (Exception e) {
}
// Now you can access an https URL without having the certificate in the truststore
try {
URL url = new URL(URLString + request);
BufferedReader in = new BufferedReader(new InputStreamReader(
url.openStream()));
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
System.out.println(sb.toString());
} catch (MalformedURLException e) {
}
}
}