Puedes hacer la llamada al applet y dentro de ella, invocar a un servlet de por medio, donde los puntos o lo que quieras del applet, puedas escribirlos a través del canal de comunicaciones del mismo servlet <<outputStream>> guardándolos en un vector de objetos si así lo quieres, e internamente lo procesas y si quieres retornas nuevamente el valor resultado al mismo applet o todo lo que tú quieras hacer con ello.
Puedes usar como referencia esta clase Java y este applet, y luego tú le das forma para tu aplicación:
Código PHP:
package myPackage;
public class AppObjJavaScript extends Applet {
private static String strError = "Error";
private JSObject win;
private Vector vectorSalida = new Vector();
private Vector vectorEntrada = new Vector();
public AppObjJavaScript() {}
public String devolverDatos() {
int i;
StringBuffer strRespuesta = new StringBuffer();
if (this.vectorEntrada.size() == 0)
return "Ningun valor devuelto";
else {
if (this.vectorEntrada.size() > 1)
for (i = 0; i < this.vectorEntrada.size(); i++) {
try {
strRespuesta.append(this.vectorEntrada.elementAt(i).toString());
strRespuesta.append(clsConstantes.DELIMITADOR_COMPONENTE);
} catch (Exception e) {
}
} else
strRespuesta.append(this.vectorEntrada.elementAt(0).toString());
}
return strRespuesta.toString();
}
public int enviarDatos(String strUrl) {
URL con = null;
URLConnection conAbierta = null;
ObjectOutputStream objOutServlet = null;
ObjectInputStream objInput = null;
Object o = null;
ExcepcionGenerica clex = null;
String strPantallaerror = "";
String pantallaerror = "";
String strPantallaError = "";
try {
con = new URL(strUrl);
conAbierta = con.openConnection();
conAbierta.setDoInput(true);
conAbierta.setDoOutput(true);
conAbierta.setUseCaches(false);
conAbierta.setRequestProperty("Content-Type", "application/octet-stream");
// Obtiene el canal de escritura
objOutServlet = new ObjectOutputStream(conAbierta.getOutputStream());
// Escribe en el canal
objOutServlet.writeObject(this.vectorSalida);
objOutServlet.flush();
objOutServlet.close();
// Vacia el vector de salida
this.vectorSalida = null;
this.vectorSalida = new Vector();
// Espera de resultado
objInput = new ObjectInputStream(conAbierta.getInputStream());
o = objInput.readObject();
objInput.close();
if (o instanceof ExcepcionGenerica) {
clex = (ExcepcionGenerica) o;
/**/
System.out.println("Error de tipo ExcepcionGenerica --> " + clex.getBolErrorControlado());
// En función del tipo de error se muestra una pantalla de error u otra
if (clex.getBolErrorControlado()) {
strPantallaerror = "window.showModalDialog('/html/errores/avisousuario.html','" +
clex.getStrError() + "','dialogWidth:300px;dialogHeight:175px;status:no;help:no;resizable:no');";
win.eval(strPantallaerror);
} else {
pantallaerror = clex.fncMostrarPantallaError().trim();
strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();
win.eval(strPantallaError);
}
return Integer.valueOf(clex.getIntFilaTablaError()).intValue();
} else
if (o instanceof Vector) {
this.vectorEntrada = (Vector) o;
return -1;
} else
return -1;
} catch (java.io.IOException e) {
System.out.println("catch IO: Error de tipo Excepcion Generica --> " + e.getMessage());
clex = new ExcepcionGenerica("ERROR en la comunicación con el Servlet (datoSimple): " + e.getMessage());
pantallaerror = clex.fncMostrarPantallaError().trim();
strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();
win.eval(strPantallaError);
return 0;
} catch (Exception e) {
/**/
System.out.println("catch: Error de tipo Excepcion Generica --> " + e.getMessage());
clex = new ExcepcionGenerica("ERROR en la comunicación con el Servlet (datoSimple): " + e.getMessage());
pantallaerror = clex.fncMostrarPantallaError().trim();
strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();
win.eval(strPantallaError);
return 0;
}
}
public String getAppletInfo() {
return "Carga una serie de componentes de la factoría de presentación";
}
public String[][] getParameterInfo() {
return null;
}
public void init() {
try {
System.out.println("Applet de factoria cargado.");
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
win = JSObject.getWindow(this);
}
public String obtenerDatoCompuesto(String servlet, String argumentos, int numColumnas, boolean combo) {
ObjectInputStream objIn = null;
Object objLeido = null;
Vector vectorArrayObjetos = new Vector();
Object arrayObjetos[];
String strValorDevuelto = "";
int indiceArray;
ExcepcionGenerica clex = null;
//Llamo al servlet
try {
if (!argumentos.equalsIgnoreCase(""))
argumentos = "?" + argumentos;
URL con = new URL(servlet + argumentos);
URLConnection conAbierta = con.openConnection();
conAbierta.setDoInput(true);
conAbierta.setUseCaches(false);
conAbierta.setRequestProperty("Content-Type", "application/octet-stream");
//Leer Datos del Servlet
objIn = new ObjectInputStream(conAbierta.getInputStream());
objLeido = (Object) objIn.readObject();
objIn.close();
if (objLeido instanceof Vector) {
vectorArrayObjetos = (Vector) objLeido;
String haySiguiente = "F";
// Comprobar si manda información de paginación.
if (vectorArrayObjetos != null && vectorArrayObjetos.size() > 0 && vectorArrayObjetos.elementAt(0)
instanceof Boolean) {
if (((Boolean) vectorArrayObjetos.elementAt(0)).booleanValue())
haySiguiente = "T";
else
haySiguiente = "F";
vectorArrayObjetos = (Vector) vectorArrayObjetos.elementAt(1);
}
if (combo)
haySiguiente = "";
for (int indiceVector = 0; indiceVector < vectorArrayObjetos.size(); indiceVector++) {
arrayObjetos = (Object[]) vectorArrayObjetos.elementAt(indiceVector);
for (indiceArray = 0; indiceArray < numColumnas; indiceArray++) {
if (arrayObjetos[indiceArray] == null)
strValorDevuelto += " " + clsConstantes.DELIMITADOR_CAMPO;
else
strValorDevuelto += arrayObjetos[indiceArray].toString() + clsConstantes.DELIMITADOR_CAMPO;
}
strValorDevuelto += clsConstantes.DELIMITADOR_FILA;
}
if (strValorDevuelto.length() > 2)
strValorDevuelto = haySiguiente + strValorDevuelto.substring(0, (strValorDevuelto.length() - 2));
}
else
if (objLeido instanceof ExcepcionGenerica) {
// capturamos la ClsExcepcion
clex = new ExcepcionGenerica((ExcepcionGenerica) objLeido);
String pantallaerror = clex.fncMostrarPantallaError().trim();
String strPantallaError = pantallaerror.substring(30, pantallaerror.length() - 9).trim();
win.eval(strPantallaError);
}
else
strValorDevuelto = strError;
} //fin del try
catch (Exception excServlet) {
//clex = new ExcepcionGenerica("ERROR en la comunicación con el Servlet (datoSimple): " + excServlet.getMessage());
clex = new ExcepcionGenerica(excServlet.getMessage());
String pantallaerror = clex.fncMostrarPantallaError().trim();
String strPantallaError = pantallaerror.substring(28, pantallaerror.length() - 9).trim();
win.eval(strPantallaError);
strValorDevuelto = strError;
}
finally {
objIn = null;
objLeido = null;
return (strValorDevuelto);
}
}
continúa .............