Foros del Web » Programación para mayores de 30 ;) » Java »

Servlet error

Estas en el tema de Servlet error en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/03/2007, 18:33
 
Fecha de Ingreso: noviembre-2005
Mensajes: 39
Antigüedad: 18 años, 6 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.
  #2 (permalink)  
Antiguo 10/03/2007, 07:50
 
Fecha de Ingreso: marzo-2006
Mensajes: 54
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Servlet error

parece ser un error en el classpath
puedes poner el comando con el q compilas desde la linea de comandos??

de todas formas date una vuelta por aki:
http://www.chuidiang.com/java/classpath/classpath.php
  #3 (permalink)  
Antiguo 10/03/2007, 18:16
 
Fecha de Ingreso: noviembre-2005
Mensajes: 39
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Servlet error

Holas.
Debo suponer que JCREATOR, un IDE para java, hace todo el trabajo que aquí se explica:
http://www.chuidiang.com/java/classpath/classpath.php
tan solo debo indicarle el *.jar que incluye mi aplicación y el se encarga de compilarlo, chevere verdad como cualquier IDE que existe.
Solo que al levantar la aplicacion WEB es otra la historia, como lo he explicado en el primer apartado arriiiiiiiiba .
Asi que me dedique a copiar el
Cita:
bfopdf.jar
en todo los directorios de JAVA donde existieran *.jar, ya que java.exe busca todos los *.jar de los directorios de JAVA. pero asi aun nada . ¿Qué podra ser?.
Ayudar me porfavor.
  #4 (permalink)  
Antiguo 12/03/2007, 18:39
 
Fecha de Ingreso: noviembre-2005
Mensajes: 39
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Servlet error

Hola a Todos(as).
Aqui le traigo la solución a esto. Ya no es necesario que uno este urgueteando el susodicho CLASSPATH () para compilar o ejecutar las aplicaciones una y otra ves , tan solo debes copiar cualquier los *.jar en el directorio /..../jdk.../lib/ext/, y ya esta. Sin mucha ciencia. Si alguien no esta de acuerdo que lo diga y lo explique, a mi me funciona de maravilla ahora mi applet se inicia.
Gracias por la atención prestada.

ALIVIANATE!!!!!!!!!
  #5 (permalink)  
Antiguo 13/03/2007, 01:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Servlet error

Para aprender de que va el classpath y como configurarlo:
http://java.sun.com/j2se/1.4.2/docs/...classpath.html
http://www-128.ibm.com/developerwork...lasspath-unix/

De este ultimo, cito:
Cita:
jre/lib/ext

JAR archives placed in your jre/lib/ext directory are added to the classpath of all applications run with that virtual machine. While this seems convenient, it is also a long-term mistake akin to adding directories to the CLASSPATH environment variable. Sooner or later (probably sooner), you'll load the wrong version of a class from a place you aren't even thinking about and waste hours debugging.

This problem is especially serious when deploying server-side applications. Be very careful that the server you're deploying to doesn't have any extra JARs in its jre/lib/ext directory. Problems caused by the wrong version of a JAR archive in the classpath can be extremely hard to debug if you don't recognize the symptoms or know just what to look for. To avoid these problems, some frameworks have even gone so far as to write their own class loaders that bypass Java code's usual class loading mechanisms.
O sea, mala idea. Es mejor aprender como poner el classpath. De igual forma, no es muy viable que les digas a los que quieren usar tu applet que se copien unos archivos en un directorio del disco duro para poder usarlo.

Busca el parametro "archive" del tag APPLET:
http://mindprod.com/jgloss/applet.html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:29.