Tengo lo siguiente /aplicacionWeb/home.jsp.
y esta la estrutura de me aplicación web:
/ejemplo/
- /applet/applet.class
/applet/applet$1.class
- /Web-inf/classes/servlets/control/servletsimple.class
/Web-inf/classes/servletsimple.java
/Web-inf/lib/bfopdf.jar
/Web-inf/web.xmlEn mi web.xml ya esta mapeado el servlet.
Este es mi applet que fue compilado dentro de /ejemplo
y asi creo el /aplicacionWeb/applet/*.class
Cita:
este es el codigo del Servlet:package applet;
import java.net.*;
import java.io.*;
import java.applet.*;
import java.awt.Color;
import org.faceless.pdf2.*;
public class applet extends Applet {
public void init() {
initComponents();
}
private void initComponents() {
try{ PDF p = new PDF();
PDFPage page = p.newPage("A4");
PDFStyle mystyle = new PDFStyle();
mystyle.setFont(new StandardFont(StandardFont.HELVETICA), 24);
mystyle.setFillColor(Color.black);
page.setStyle(mystyle);
page.drawText("Hello, PDF-viewing World!", 100, page.getHeight()-100);
// Set some meta-information in the document
p.setInfo("Author", "Joe Bloggs");
p.setInfo("Title", "My First Document");
// Set the password
StandardEncryptionHandler handler = new StandardEncryptionHandler();
handler.setUserPassword("password");
p.setEncryptionHandler(handler);
OutputStream fo = new FileOutputStream("C:/HelloWorld.pdf");
p.render(fo);
fo.close();
}
catch(IOException error)
{
error.printStackTrace();
}
label1 = new java.awt.Label();
mensajeenviar = new java.awt.TextArea();
label2 = new java.awt.Label();
mensajerecibir = new java.awt.TextArea();
botonenviar = new java.awt.Button();
setLayout(new java.awt.GridLayout(5, 1, 2, 5));
label1.setAlignment(java.awt.Label.CENTER);
label1.setForeground(new java.awt.Color(51, 51, 255));
label1.setText("Introduzca el mensaje a enviar al servidor");
add(label1);
add(mensajeenviar);
label2.setAlignment(java.awt.Label.CENTER);
label2.setForeground(new java.awt.Color(255, 0, 0));
label2.setText("Mensaje recibido del servidor");
add(label2);
add(mensajerecibir);
botonenviar.setLabel("Pulsar para conectar al servidor");
botonenviar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botonenviarActionPerformed(evt);
}
});
add(botonenviar);
}
private void botonenviarActionPerformed(java.awt.event.ActionEv ent evt) {
String s_textoaenviar = mensajeenviar.getText();
mensajerecibir.setText("Simulacion: " + peticionPost(s_textoaenviar));
}
// enviamos la peticion por post
String peticionPost(String mensaje) {
URL miurl = null;
String cadenaaux = null;
String cadenaretorno = "";
String consulta = "param1=" + URLEncoder.encode(mensaje);
try {
// recuperamos la direccion de servidor destino
String host = this.getCodeBase().getHost();
// elegimos la URI del recurso a invocar
String peticion = "/aguas/servletsimple";
// montamos la direccion base
miurl = new URL(getCodeBase(),peticion);
// abrimos la conexion
URLConnection conexion = miurl.openConnection();
// aactivamos la salida
conexion.setDoOutput(true);
// Creamos el stream de escritura
ObjectOutputStream buffersalida = new ObjectOutputStream(conexion.getOutputStream());
// montamos un array de elementos para enviarlos
int array[] = new int[10];
// inicializamos el array
for(int i=0;i <array.length;i++)
{
array[i] = i*3;
}
// escribimos el objeto
buffersalida.writeObject(array);
// enviamos
buffersalida.flush();
// Creamos el Stream de lectura
ObjectInputStream bufferentrada = new ObjectInputStream(conexion.getInputStream());
// creamos la referencia que recogera los datos
String respuesta[];
// leemos la respuesta
respuesta = (String [])bufferentrada.readObject();
// iteramos por la respuesta y montamos el mensaje
for(int i=0 ; i < respuesta.length; i++)
{
cadenaretorno += (respuesta[i] + "\n");
}
buffersalida.close();
bufferentrada.close();
}
catch (Exception e)
{
return "Error al generar url " + e.getMessage();
}
return cadenaretorno;
}
// enviamos por get la petición
String peticionGet(String mensaje) {
URL miurl = null;
String cadenaaux = null;
String cadenaretorno = "";
try {
String host = this.getCodeBase().getHost();
String peticion = "/servlet/servletsimple?param1=" + URLEncoder.encode(mensaje);
miurl = new URL(getCodeBase(),peticion);
InputStream buffer = miurl.openStream();
BufferedReader bufferreader = new BufferedReader(new InputStreamReader(buffer));
while( (cadenaaux = bufferreader.readLine()) != null) {
cadenaretorno += cadenaaux;
}
buffer.close();
}
catch (Exception e) {
return "Error al generar url " + e.getMessage();
}
return cadenaretorno;
}
// Variables declaration - do not modify
private java.awt.Button botonenviar;
private java.awt.Label label1;
private java.awt.Label label2;
private java.awt.TextArea mensajeenviar;
private java.awt.TextArea mensajerecibir;
// End of variables declaration
}
import java.net.*;
import java.io.*;
import java.applet.*;
import java.awt.Color;
import org.faceless.pdf2.*;
public class applet extends Applet {
public void init() {
initComponents();
}
private void initComponents() {
try{ PDF p = new PDF();
PDFPage page = p.newPage("A4");
PDFStyle mystyle = new PDFStyle();
mystyle.setFont(new StandardFont(StandardFont.HELVETICA), 24);
mystyle.setFillColor(Color.black);
page.setStyle(mystyle);
page.drawText("Hello, PDF-viewing World!", 100, page.getHeight()-100);
// Set some meta-information in the document
p.setInfo("Author", "Joe Bloggs");
p.setInfo("Title", "My First Document");
// Set the password
StandardEncryptionHandler handler = new StandardEncryptionHandler();
handler.setUserPassword("password");
p.setEncryptionHandler(handler);
OutputStream fo = new FileOutputStream("C:/HelloWorld.pdf");
p.render(fo);
fo.close();
}
catch(IOException error)
{
error.printStackTrace();
}
label1 = new java.awt.Label();
mensajeenviar = new java.awt.TextArea();
label2 = new java.awt.Label();
mensajerecibir = new java.awt.TextArea();
botonenviar = new java.awt.Button();
setLayout(new java.awt.GridLayout(5, 1, 2, 5));
label1.setAlignment(java.awt.Label.CENTER);
label1.setForeground(new java.awt.Color(51, 51, 255));
label1.setText("Introduzca el mensaje a enviar al servidor");
add(label1);
add(mensajeenviar);
label2.setAlignment(java.awt.Label.CENTER);
label2.setForeground(new java.awt.Color(255, 0, 0));
label2.setText("Mensaje recibido del servidor");
add(label2);
add(mensajerecibir);
botonenviar.setLabel("Pulsar para conectar al servidor");
botonenviar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botonenviarActionPerformed(evt);
}
});
add(botonenviar);
}
private void botonenviarActionPerformed(java.awt.event.ActionEv ent evt) {
String s_textoaenviar = mensajeenviar.getText();
mensajerecibir.setText("Simulacion: " + peticionPost(s_textoaenviar));
}
// enviamos la peticion por post
String peticionPost(String mensaje) {
URL miurl = null;
String cadenaaux = null;
String cadenaretorno = "";
String consulta = "param1=" + URLEncoder.encode(mensaje);
try {
// recuperamos la direccion de servidor destino
String host = this.getCodeBase().getHost();
// elegimos la URI del recurso a invocar
String peticion = "/aguas/servletsimple";
// montamos la direccion base
miurl = new URL(getCodeBase(),peticion);
// abrimos la conexion
URLConnection conexion = miurl.openConnection();
// aactivamos la salida
conexion.setDoOutput(true);
// Creamos el stream de escritura
ObjectOutputStream buffersalida = new ObjectOutputStream(conexion.getOutputStream());
// montamos un array de elementos para enviarlos
int array[] = new int[10];
// inicializamos el array
for(int i=0;i <array.length;i++)
{
array[i] = i*3;
}
// escribimos el objeto
buffersalida.writeObject(array);
// enviamos
buffersalida.flush();
// Creamos el Stream de lectura
ObjectInputStream bufferentrada = new ObjectInputStream(conexion.getInputStream());
// creamos la referencia que recogera los datos
String respuesta[];
// leemos la respuesta
respuesta = (String [])bufferentrada.readObject();
// iteramos por la respuesta y montamos el mensaje
for(int i=0 ; i < respuesta.length; i++)
{
cadenaretorno += (respuesta[i] + "\n");
}
buffersalida.close();
bufferentrada.close();
}
catch (Exception e)
{
return "Error al generar url " + e.getMessage();
}
return cadenaretorno;
}
// enviamos por get la petición
String peticionGet(String mensaje) {
URL miurl = null;
String cadenaaux = null;
String cadenaretorno = "";
try {
String host = this.getCodeBase().getHost();
String peticion = "/servlet/servletsimple?param1=" + URLEncoder.encode(mensaje);
miurl = new URL(getCodeBase(),peticion);
InputStream buffer = miurl.openStream();
BufferedReader bufferreader = new BufferedReader(new InputStreamReader(buffer));
while( (cadenaaux = bufferreader.readLine()) != null) {
cadenaretorno += cadenaaux;
}
buffer.close();
}
catch (Exception e) {
return "Error al generar url " + e.getMessage();
}
return cadenaretorno;
}
// Variables declaration - do not modify
private java.awt.Button botonenviar;
private java.awt.Label label1;
private java.awt.Label label2;
private java.awt.TextArea mensajeenviar;
private java.awt.TextArea mensajerecibir;
// End of variables declaration
}
Cita:
Disculpen lo extenso de esto solo quiero que se me entienda el problema y lo puedan probar uds mismos.package servlets.control;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class servletsimple extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// establecemos el formato de la respuesta
response.setContentType("application/octet-stream");
try
{
// recuperamos el stram de entrada
ObjectInputStream bufferentrada = new ObjectInputStream(request.getInputStream());
// leemos un array de datos
int[] arrayRecuperado = (int[])bufferentrada.readObject();
// cramos una variable auxiliar
String cadenaAux = "";
// iteramos por los elementos
for(int i=0; i < arrayRecuperado.length ;i++)
{
System.out.println("El valor recuperado del elemento " + i + " es " + arrayRecuperado[i]);
// concatenamos los elementos que leemos
cadenaAux += (arrayRecuperado[i] + " - ");
}
// Configurarmos un Stream de Salida
ObjectOutputStream buffersalida = new ObjectOutputStream(response.getOutputStream());
// construimos el objeto a retornar
String[] resultado = new String[2];
// asignamos un elemento fijo
resultado[0]="Esta es la cadena retornada";
// y concatenamos el variable
resultado[1]= cadenaAux;
// escribimos los datos
buffersalida.writeObject(resultado);
// y los enviamos
buffersalida.flush();
}
catch(Exception e)
{
System.out.println("Error al recuperar datos");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class servletsimple extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// establecemos el formato de la respuesta
response.setContentType("application/octet-stream");
try
{
// recuperamos el stram de entrada
ObjectInputStream bufferentrada = new ObjectInputStream(request.getInputStream());
// leemos un array de datos
int[] arrayRecuperado = (int[])bufferentrada.readObject();
// cramos una variable auxiliar
String cadenaAux = "";
// iteramos por los elementos
for(int i=0; i < arrayRecuperado.length ;i++)
{
System.out.println("El valor recuperado del elemento " + i + " es " + arrayRecuperado[i]);
// concatenamos los elementos que leemos
cadenaAux += (arrayRecuperado[i] + " - ");
}
// Configurarmos un Stream de Salida
ObjectOutputStream buffersalida = new ObjectOutputStream(response.getOutputStream());
// construimos el objeto a retornar
String[] resultado = new String[2];
// asignamos un elemento fijo
resultado[0]="Esta es la cadena retornada";
// y concatenamos el variable
resultado[1]= cadenaAux;
// escribimos los datos
buffersalida.writeObject(resultado);
// y los enviamos
buffersalida.flush();
}
catch(Exception e)
{
System.out.println("Error al recuperar datos");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
Bueno cumpas, al quitar lo que esta en rojo (ver applet) y lo compilo en modo consola de WXP todo perfecto, ahora, al habilitarlo y compilarlo sale el error:
Cita:
Cuando lo hago con el JCREATOR PRO al que le agrego el bfopdf.jar compila sin problemas. Quiero Levantar el sistema todo felicote y sale esto en la consola de java.appler.java:13:package org.faceless.pdf2 does no exist
Cita:
Vuelvo al modo DOS lo vuelvo a compilar y sigue con el error. ¿Qué pasa?java.lang.NoClassDefFoundError: org/faceless/pdf2/PDFFont
En otra aplicacion Web que hice y use esa dichosa libreria en mis servlets no tenía es problema.
La neta cumpitas, esto me trae mal , no entiendo. Una manito porfaaaaaa.