Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/03/2007, 18:33
geroj
 
Fecha de Ingreso: noviembre-2005
Mensajes: 39
Antigüedad: 19 años, 2 meses
Puntos: 0
Servlet error

Hola. Ve directo al final ahi esta descrito el problema.
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.xml
En 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:
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

}
este es el codigo del Servlet:
Cita:
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);
}
}
Disculpen lo extenso de esto solo quiero que se me entienda el problema y lo puedan probar uds mismos.
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:
appler.java:13:package org.faceless.pdf2 does no exist
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.
Cita:
java.lang.NoClassDefFoundError: org/faceless/pdf2/PDFFont
Vuelvo al modo DOS lo vuelvo a compilar y sigue con el error. ¿Qué pasa?
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.