Проблема Xalan+JSP+JBean
От: x01001  
Дата: 20.03.04 21:02
Оценка:
Нужно используя Xerces обьеденить xml с xsl, а на выходе получить html.
В JPS используеться bean, в котором я создаю экземпляр класса Kernel, затем вызываю метод getHTML() который должен вернуть HTML-код.

Работаю под JBuilder 7
Tomcat-4.0.3

Подключаю к проекту нужные либы:
тоесть
xalan.jar
xml-apis.jar
xercesImpl.jar

Вот во время запуска проекта, вылетают два эксепшина:

javax.servlet.ServletException: javax/xml/transform/TransformerFactoryConfigurationError
и
java.lang.NoClassDefFoundError: javax/xml/transform/TransformerFactoryConfigurationError



Тестировал семпл из ксалановского пакета SempleTranform, сделан в виде приложения.
Используються такие-же куски кода (то-есть я его от-туда выдрал вставил в свой проект и чуть-чуть переделал

вот они:
...
...
        StringWriter writer = new StringWriter();
        try {
      TransformerFactory tFactory = TransformerFactory.newInstance();
          Transformer transformer = tFactory.newTransformer(new StreamSource(  new StringReader(xsl) ));
          transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
        }
        catch (TransformerException ex) {
        }
    catch (TransformerFactoryConfigurationError ex) {
        }

    Sysstem.out(writer.toString());
...
...


). Все работает!!!

Вот уже 3 день не могу понять в чем мой глюк, ПОМОГИТЕ КТО МОЖЕТ ПЛИЗ!


Код класса Kernel:
package forum.engine;
import forum.database.DBConnector;
import java.util.ArrayList;
import java.util.Iterator;
import forum.database.Category;
import forum.database.Forum;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.ErrorListener;
import java.util.Properties;

public class Kernel {
  private DBConnector connector = null;
  public Kernel() {
    connector = new DBConnector();
  }
  public synchronized String getHTML(){
    String out = "........";  //Здесь XML контент
    String xsl = "........";  //Здесь XSL контент

    StringWriter writer = new StringWriter();
    try {
    TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer(new StreamSource(  new StringReader(xsl) ));
        transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
    }
    catch (TransformerException ex) {
    }catch (TransformerFactoryConfigurationError ex) {
    }
    return writer.toString();
  }
}


Код бина:

package forum.beans;

import forum.database.DBConnector;
import forum.database.User;
import java.util.ArrayList;
import forum.database.Category;
import forum.database.Forum;
import forum.database.Theme;
import forum.database.Message;
import forum.engine.Kernel;
import org.apache.xalan.xslt.EnvironmentCheck;
import java.io.PrintWriter;
import java.io.StringWriter;

public class indexBean {
  private String text = "";
  Kernel kernel = new Kernel();

  public void setText(String text){
    this.text = text;
  }
  public String getText(){
    return kernel.getHTML();
  }
}


Код JSP:

<%@ page contentType="text/html; charset=windows-1251" %>
<html>
<jsp:useBean id="indexBeanId" scope="session" class="forum.beans.indexBean" />
<jsp:setProperty name="indexBeanId" property="*" />
<body>
<jsp:getProperty name="indexBeanId" property="text" />
</body>
</html>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.