Applet won't work with Sun VM only MS. Why?!


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 2 of 2

Thread: Applet won't work with Sun VM only MS. Why?!

  1. #1
    Chris Taylor Guest

    Applet won't work with Sun VM only MS. Why?!

    Hi,
    I have the following java class running in an ASP/VB browser
    application. Its intended to dynamically fetch menu information from a
    database and display results in a tree view style in the client's browser.
    It's used so as to avoid refreshing the whole page. However, it only works
    when the app is installed on a machine with a Microsoft VM. It doesnt appear
    to be properly Sun/Java complient - something to do with I/O streams
    perhaps? Can someone help solve this for me please as its currently beyond
    my Java ability. Look forward to any replies. Thanks!

    Chris.

    *****************************
    import java.applet.Applet;
    import java.io.*;
    import java.net.*;
    //import com.ms.security.*;

    public class TP_Return extends Applet
    {

    String mSessionID;
    String mTargetASP;

    public void stop()
    {
    mSessionID = "";
    mTargetASP = "";
    }

    public void destroy()
    {
    }

    public String ioRoutine(String ioCommandType, String ioDataParam)
    {
    URL aspTargetURL = null;
    URLConnection ioConnection = null;
    DataInputStream iStream = null;
    DataOutputStream oStream = null;
    int bytes_read = 0;
    byte buffer[] = new byte[1024];
    String ioDataString = "";

    if (mTargetASP == null)
    {mTargetASP = ioDataParam;}

    try
    {aspTargetURL = new URL(mTargetASP);}
    catch(MalformedURLException err)
    {System.out.println("Unable to create URL for CGI ("
    + mTargetASP + "): " + err);}

    try
    {ioConnection = aspTargetURL.openConnection();}
    catch(IOException err)
    {System.out.println("Unable to open URL connection:
    " + err);}

    // May be needed
    //PolicyEngine.assertPermission(PermissionID.NETIO);
    ioConnection.setDoOutput(true);
    ioConnection.setDoInput(true);
    ioConnection.setUseCaches(false);
    ioConnection.setRequestProperty("Content-type",
    "application/x-www-form-urlencoded");
    ioConnection.setAllowUserInteraction(false);

    try
    {oStream = new
    DataOutputStream(ioConnection.getOutputStream());}
    catch(IOException err)
    {System.out.println("Unable to create the output
    stream: " + err);}
    catch(SecurityException err)
    {System.out.println("SecurityException : " + err);}

    int intNoCase = ioCommandType.indexOf("NoCaseChange");
    if (intNoCase == -1)
    {ioCommandType = ioCommandType.toUpperCase();}
    String ioInformation = "";
    // If ioCommandType is "getparam" ioInformation will look
    like this:
    //
    "command=getparam&version=2.0&session_id=TPRO001&aicc_data="
    // If ioCommandType is "putparam" ioInformation will look
    like this:
    //
    "command=putparam&version=2.0&session_id=TPRO001&aicc_data=[core]\r\nlesson_
    status=I\r\nscore=30\r\ntime=00:00:2000\r\n[Progress]\r\np_fnumber=12";

    // If ioCommandType is "putTPInfo" ioInformation will look
    like this:
    //
    "command=putTPInfo&TPSkill_ID=56&TP_Perc=14&TP_FN=12&TP_Time=135";
    int pos = ioCommandType.indexOf("TPINFO");
    if (pos != -1)
    {
    pos = ioCommandType.indexOf("~");
    if (pos != -1)
    {
    String lngFIID = ioCommandType.substring(pos
    + 1);
    ioInformation = "command=GETFIINFO&FIIndex="
    + lngFIID;
    }
    else
    {ioInformation = "command=" + ioCommandType
    + "&" + ioDataParam;}
    }
    else
    {
    if (mSessionID == null)
    {mSessionID = "-1";}
    ioInformation = "command=" + ioCommandType +
    "&version=2.0" + "&session_id=" + URLEncoder.encode(mSessionID) +
    "&aicc_data=" + URLEncoder.encode(ioDataParam);

    }

    try
    {
    oStream.writeBytes(ioInformation);
    oStream.flush();
    oStream.close();
    }
    catch(IOException err)
    {System.out.println("Unable to write the data: " +
    err);}

    try
    {iStream = new
    DataInputStream(ioConnection.getInputStream());}
    catch(IOException err)
    {System.out.println("Unable to open HTTP connection
    to read: " + err);}

    try
    {
    while((bytes_read = iStream.read(buffer)) > 0)
    ioDataString += new String(buffer, 0, 0,
    bytes_read);
    }
    catch(IOException err)
    {System.out.println("Unable to read POST response: "
    + err);}

    finally
    {
    try
    {
    if(iStream != null)
    iStream.close();
    }
    catch(IOException err)
    {System.out.println("Unable to close HTTP
    connection: " + err);}
    }

    return ioDataString;
    }

    public void init()
    {
    URL urlString = getDocumentBase();
    String fileName = urlString.getFile();
    String upperFileName = fileName.toUpperCase();
    // Get AICC ID Number and store in mSessionID variable
    int pos = upperFileName.indexOf("AICC_SID");
    if(pos > -1)
    {
    mSessionID = fileName.substring(pos + 9);
    if(mSessionID.indexOf("&") > -1)
    {mSessionID = mSessionID.substring(0,
    mSessionID.indexOf("&"));}
    }

    // Get Callback ASP Page and store in mTargetASP
    pos = upperFileName.indexOf("AICC_URL");
    if(pos > -1)
    {
    mTargetASP = fileName.substring(pos + 9);
    if(mTargetASP.indexOf("&") > -1)
    {mTargetASP = mTargetASP.substring(0,
    mTargetASP.indexOf("&"));}
    }

    // I think this bit is URLUnencoding the Target ASP Path
    String temp = new String("");
    for(int i = 0; i < mTargetASP.length(); i++)
    {
    if(mTargetASP.charAt(i) == '+')
    {temp += 32;}
    else
    {
    if(mTargetASP.charAt(i) == '%')
    {
    int lead = mTargetASP.charAt(i + 1);
    if(lead < 65)
    {lead -= 48;}
    else
    {
    if(lead < 80)
    {lead -= 65;}
    else
    {lead -= 97;}
    }
    int trail = mTargetASP.charAt(i +
    2);
    if(trail < 65)
    {trail -= 48;}
    else
    {
    if(trail < 80)
    {trail -= 55;}
    else
    {trail -= 87;}
    }
    temp += (char)(lead * 16 + trail);
    i += 2;
    }
    else
    {temp += mTargetASP.charAt(i);}
    }
    }
    mTargetASP = temp;
    }
    }




  2. #2
    MarkN Guest

    Re: Applet won't work with Sun VM only MS. Why?!


    What tool did you use to create the Applet? J++?

    I tried to put the code in my IDE and compile but the code was messed up
    in the post so I couldn't tell what was comments.

    Don't expect any code that works fine with the MS VM to work with anything
    else. You might want to try compiling your code with a current Java JVM
    and see what you get error wise.

    Mark


    "Chris Taylor" <chris@chtaylor.freeserve.co.uk> wrote:
    >Hi,
    > I have the following java class running in an ASP/VB browser
    >application. Its intended to dynamically fetch menu information from a
    >database and display results in a tree view style in the client's browser.
    >It's used so as to avoid refreshing the whole page. However, it only works
    >when the app is installed on a machine with a Microsoft VM. It doesnt appear
    >to be properly Sun/Java complient - something to do with I/O streams
    >perhaps? Can someone help solve this for me please as its currently beyond
    >my Java ability. Look forward to any replies. Thanks!
    >
    >Chris.
    >
    >*****************************
    >import java.applet.Applet;
    >import java.io.*;
    >import java.net.*;
    >//import com.ms.security.*;
    >
    >public class TP_Return extends Applet
    >{
    >
    > String mSessionID;
    > String mTargetASP;
    >
    > public void stop()
    > {
    > mSessionID = "";
    > mTargetASP = "";
    > }
    >
    > public void destroy()
    > {
    > }
    >
    > public String ioRoutine(String ioCommandType, String ioDataParam)
    > {
    > URL aspTargetURL = null;
    > URLConnection ioConnection = null;
    > DataInputStream iStream = null;
    > DataOutputStream oStream = null;
    > int bytes_read = 0;
    > byte buffer[] = new byte[1024];
    > String ioDataString = "";
    >
    > if (mTargetASP == null)
    > {mTargetASP = ioDataParam;}
    >
    > try
    > {aspTargetURL = new URL(mTargetASP);}
    > catch(MalformedURLException err)
    > {System.out.println("Unable to create URL for CGI

    ("
    >+ mTargetASP + "): " + err);}
    >
    > try
    > {ioConnection = aspTargetURL.openConnection();}
    > catch(IOException err)
    > {System.out.println("Unable to open URL connection:
    >" + err);}
    >
    > // May be needed
    > //PolicyEngine.assertPermission(PermissionID.NETIO);
    > ioConnection.setDoOutput(true);
    > ioConnection.setDoInput(true);
    > ioConnection.setUseCaches(false);
    > ioConnection.setRequestProperty("Content-type",
    >"application/x-www-form-urlencoded");
    > ioConnection.setAllowUserInteraction(false);
    >
    > try
    > {oStream = new
    >DataOutputStream(ioConnection.getOutputStream());}
    > catch(IOException err)
    > {System.out.println("Unable to create the output
    >stream: " + err);}
    > catch(SecurityException err)
    > {System.out.println("SecurityException : " + err);}
    >
    > int intNoCase = ioCommandType.indexOf("NoCaseChange");
    > if (intNoCase == -1)
    > {ioCommandType = ioCommandType.toUpperCase();}
    > String ioInformation = "";
    > // If ioCommandType is "getparam" ioInformation will look
    >like this:
    > //
    >"command=getparam&version=2.0&session_id=TPRO001&aicc_data="
    > // If ioCommandType is "putparam" ioInformation will look
    >like this:
    > //
    >"command=putparam&version=2.0&session_id=TPRO001&aicc_data=[core]\r\nlesson_
    >status=I\r\nscore=30\r\ntime=00:00:2000\r\n[Progress]\r\np_fnumber=12";
    >
    > // If ioCommandType is "putTPInfo" ioInformation will look
    >like this:
    > //
    >"command=putTPInfo&TPSkill_ID=56&TP_Perc=14&TP_FN=12&TP_Time=135";
    > int pos = ioCommandType.indexOf("TPINFO");
    > if (pos != -1)
    > {
    > pos = ioCommandType.indexOf("~");
    > if (pos != -1)
    > {
    > String lngFIID = ioCommandType.substring(pos
    >+ 1);
    > ioInformation = "command=GETFIINFO&FIIndex="
    >+ lngFIID;
    > }
    > else
    > {ioInformation = "command=" + ioCommandType
    >+ "&" + ioDataParam;}
    > }
    > else
    > {
    > if (mSessionID == null)
    > {mSessionID = "-1";}
    > ioInformation = "command=" + ioCommandType +
    >"&version=2.0" + "&session_id=" + URLEncoder.encode(mSessionID) +
    >"&aicc_data=" + URLEncoder.encode(ioDataParam);
    >
    > }
    >
    > try
    > {
    > oStream.writeBytes(ioInformation);
    > oStream.flush();
    > oStream.close();
    > }
    > catch(IOException err)
    > {System.out.println("Unable to write the data:

    " +
    >err);}
    >
    > try
    > {iStream = new
    >DataInputStream(ioConnection.getInputStream());}
    > catch(IOException err)
    > {System.out.println("Unable to open HTTP connection
    >to read: " + err);}
    >
    > try
    > {
    > while((bytes_read = iStream.read(buffer)) > 0)
    > ioDataString += new String(buffer, 0, 0,
    >bytes_read);
    > }
    > catch(IOException err)
    > {System.out.println("Unable to read POST response:

    "
    >+ err);}
    >
    > finally
    > {
    > try
    > {
    > if(iStream != null)
    > iStream.close();
    > }
    > catch(IOException err)
    > {System.out.println("Unable to close HTTP
    >connection: " + err);}
    > }
    >
    > return ioDataString;
    > }
    >
    > public void init()
    > {
    > URL urlString = getDocumentBase();
    > String fileName = urlString.getFile();
    > String upperFileName = fileName.toUpperCase();
    > // Get AICC ID Number and store in mSessionID variable
    > int pos = upperFileName.indexOf("AICC_SID");
    > if(pos > -1)
    > {
    > mSessionID = fileName.substring(pos + 9);
    > if(mSessionID.indexOf("&") > -1)
    > {mSessionID = mSessionID.substring(0,
    >mSessionID.indexOf("&"));}
    > }
    >
    > // Get Callback ASP Page and store in mTargetASP
    > pos = upperFileName.indexOf("AICC_URL");
    > if(pos > -1)
    > {
    > mTargetASP = fileName.substring(pos + 9);
    > if(mTargetASP.indexOf("&") > -1)
    > {mTargetASP = mTargetASP.substring(0,
    >mTargetASP.indexOf("&"));}
    > }
    >
    > // I think this bit is URLUnencoding the Target ASP Path
    > String temp = new String("");
    > for(int i = 0; i < mTargetASP.length(); i++)
    > {
    > if(mTargetASP.charAt(i) == '+')
    > {temp += 32;}
    > else
    > {
    > if(mTargetASP.charAt(i) == '%')
    > {
    > int lead = mTargetASP.charAt(i +

    1);
    > if(lead < 65)
    > {lead -= 48;}
    > else
    > {
    > if(lead < 80)
    > {lead -= 65;}
    > else
    > {lead -= 97;}
    > }
    > int trail = mTargetASP.charAt(i

    +
    >2);
    > if(trail < 65)
    > {trail -= 48;}
    > else
    > {
    > if(trail < 80)
    > {trail -= 55;}
    > else
    > {trail -= 87;}
    > }
    > temp += (char)(lead * 16 + trail);
    > i += 2;
    > }
    > else
    > {temp += mTargetASP.charAt(i);}
    > }
    > }
    > mTargetASP = temp;
    > }
    >}
    >
    >
    >



Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center