wood burning stoves 2.0*
The moose likes Java in General and the fly likes Problem in reading the InputStream and setting the cookie value after applying the SSL(Using https). Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Problem in reading the InputStream and setting the cookie value after applying the SSL(Using https)." Watch "Problem in reading the InputStream and setting the cookie value after applying the SSL(Using https)." New topic
Author

Problem in reading the InputStream and setting the cookie value after applying the SSL(Using https).

sambasiva kumar
Greenhorn

Joined: Jan 16, 2007
Posts: 24
Hi

I am getting the following error while trying to read from the Inputstream.
It is failing to set the cookie value.
Could you please suggest me how to set the cookie in the Sun-ONE-Web-Server 6.1.
I tried by including the


<sun-web-app>
<session-config>
<session-manager persistence-type="memory">
<manager-properties>
<property name="reapIntervalSeconds" value="20" />
</manager-properties>
</session-manager>
<session-properties>
<property name="enableCookies" value="true" />
</session-properties>
<cookie-properties>
<property name="cookiePath" value="/" />
<property name="cookieMaxAgeSeconds" value="-1" />
</cookie-properties>
</session-config>
<jsp-config/>
</sun-web-app>


in the sun-web.xml.


Please find the code that I am using.
-------------------------------------------------------------------------------------------------------------------------------
public synchronized PageWrapper processRequest(PageWrapper pWrapper) {
Console.println("inside processRequest urlCurrentPage = "+FISConstants.urlCurrentPage);
if(FISConstants.urlCurrentPage == null) {
Console.println("url is null application is running");
// This Condition will be true if it is run as a application
try {
// Uncomment below 2 lines to run it as a application
// NavigationController aNavController = NavigationController.getInstance();
// pWrapper = aNavController.onEvent(pWrapper);
} catch (Exception e ) {
e.printStackTrace();
}
return pWrapper;
}
if(!connectServlet()) {
pWrapper.setStatus(false);
pWrapper.setErrorMessage("Could not connect to servlet");
return pWrapper;
}
sendRequest(pWrapper);
if(cookie == null) cookie = readCookie(connection);
System.out.println("The value of cookie in the process request is ............... "+ cookie);
return receiveRequest();
}


private boolean sendRequest(PageWrapper pWrapper) {
ObjectOutputStream out = null;
try {
connection.setDoInput(true);
connection.setDoOutput(true);
System.out.println("Inside sendRequest");
out = new ObjectOutputStream(connection.getOutputStream());
out.writeObject(pWrapper);
out.flush();
}
catch (Exception e) {
e.printStackTrace();
return false; //return false in case of Exception
}
finally {
try {
if(out != null)
out.close();
} catch(Exception e) {
Console.println("Unable to close Connection"+e);
}

}
return true;
}


private PageWrapper receiveRequest() {

PageWrapper pWrapper = null;
ObjectInputStream in = null;
try {
System.out.println("Inside receiveRequest");
in = new ObjectInputStream(connection.getInputStream());
System.out.println("The Object Input Stream is .............." + in);
pWrapper = (PageWrapper)in.readObject();
System.out.println("The page wrapper Object is .............." + pWrapper);

}
catch(Exception e) {
e.printStackTrace();
pWrapper = new PageWrapper();
pWrapper.setStatus(false);
pWrapper.setErrorMessage(FISConstants.ERROR_URL);
}
finally {
try {
if(in != null)
in.close();
} catch(Exception e) {
Console.println("Unable to close Connection");
}
return pWrapper;
}
}



private boolean connectServlet() {
try {
connection = (HttpsURLConnection)dataURL.openConnection();
System.out.println("Connecion in connectServlet is ................." + connection);
connection.setUseCaches(false);
connection.setDefaultUseCaches(false);
//Console.println("URL is " + dataURL);
if( cookie != null ) connection.setRequestProperty(FISConstants.COOKIE,cookie);
}
catch (Exception e) {
e.printStackTrace();
return false; //In case of Exception returns false
}
return true;
}

private String readCookie(URLConnection con) {
String key;
String value;
for( int i = 1; ( key = con.getHeaderFieldKey( i ) )!= null; ++i ){
key = key.toLowerCase();
Console.println("Key is " + key + " Value is " + con.getHeaderField(i));
if( key.equals(FISConstants.SET_COOKIE) ){
value = con.getHeaderField( i );
return value;
}
}
return null;
}
}



SSLContext sslContext = null;
try {
sslContext = SSLContext.getInstance("TLS");
X509TrustManager[] xtmArray = new X509TrustManager[] { xtm };
sslContext.init( null, xtmArray, new java.security.SecureRandom() );
} catch( GeneralSecurityException gse ) {
// Print out some error message and deal with this exception…
}
// Set the default SocketFactory and HostnameVerifier
// for javax.net.ssl.HttpsURLConnection
if( sslContext != null ) {
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory() );
}
HttpsURLConnection.setDefaultHostnameVerifier( hnv );



private X509TrustManager xtm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,
String authType) {}
public void checkServerTrusted(X509Certificate[] chain,
String authType) {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};

//Added by Sambasiva for implementation of Https
private HostnameVerifier hnv = new HostnameVerifier() {
public boolean verify(String hostname,SSLSession session) {
System.out.println("hostname: " + hostname);
return true;
}
};


public void genBatchRun(String args[]) {
}

-------------------------------------------------------------------------------------------------------------------------------


url=https://xxxxxxxxxxxxxxx:xxx
The protocol is ..........https
The host is ..........xxxx
The port is ..........xxxx
The urlSuffix is ........../servlet/WebRequestController
The dataURL is ..........https://xxxx:xxxx/servlet/WebRequestController
inside processRequest urlCurrentPage = https://xxxx:xxxx
Connecion in connectServlet is .................sun.net.www.protocol.https.DelegateHttpsURLConnection:https://xxxx:xxxx/servlet/WebRequestController
Inside sendRequest
Key is server Value is Sun-ONE-Web-Server/6.1
Key is date Value is Fri, 21 Aug 2009 07:17:37 GMT
Key is content-type Value is application/x-java-serialized-object
Key is transfer-encoding Value is chunked
The value of cookie in the process request is ............... null
Inside receiveRequest
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2155)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2621)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:251)
at com.orbitreasury.fixedincome.presentation.util.AppServCommunication.receiveRequest(AppServCommunication.java:227)
at com.orbitreasury.fixedincome.presentation.util.AppServCommunication.processRequest(AppServCommunication.java:166)
at com.orbitreasury.fixedincome.control.ServerResets.main(ServerResets.java:62)[/color]



Please suggest me a solution.
Thanks in advance.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Problem in reading the InputStream and setting the cookie value after applying the SSL(Using https).
 
Similar Threads
How to attach a certificate to a socket and send a https POST request?
SSL - client side - trusting untrusted certificates?
HttpsURLConnection Connects Time out on Geronimo
HttpsUrlConnection - Facing problem while reading the input stream and establishing the cookie
Migrating to Https(SSLSession & HttpsSession)