DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

+ Reply to Thread
Results 1 to 2 of 2
  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;
    > }
    >}
    >
    >
    >



Bookmarks

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


Top DevX Stories

Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL


Sponsored Links