Re: Проблема Xalan+JSP+JBean
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 22.03.04 09:28
Оценка: -1
Здравствуйте, x01001, Вы писали:

X>Нужно используя Xerces обьеденить xml с xsl, а на выходе получить html.

X>В JPS используеться bean, в котором я создаю экземпляр класса Kernel, затем вызываю метод getHTML() который должен вернуть HTML-код.

X>Работаю под JBuilder 7

X>Tomcat-4.0.3

X>Подключаю к проекту нужные либы:

X>тоесть
X>xalan.jar
X>xml-apis.jar
X>xercesImpl.jar

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


X>javax.servlet.ServletException: javax/xml/transform/TransformerFactoryConfigurationError

X>и
X>java.lang.NoClassDefFoundError: javax/xml/transform/TransformerFactoryConfigurationError

X>


X>Тестировал семпл из ксалановского пакета SempleTranform, сделан в виде приложения.

X>Используються такие-же куски кода (то-есть я его от-туда выдрал вставил в свой проект и чуть-чуть переделал

X>вот они:

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

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


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


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



X>Код класса Kernel:

X>
X>package forum.engine;
X>import forum.database.DBConnector;
X>import java.util.ArrayList;
X>import java.util.Iterator;
X>import forum.database.Category;
X>import forum.database.Forum;
X>import javax.xml.transform.TransformerFactory;
X>import javax.xml.transform.Transformer;
X>import javax.xml.transform.stream.StreamSource;
X>import javax.xml.transform.stream.StreamResult;
X>import java.io.*;
X>import javax.xml.transform.TransformerException;
X>import javax.xml.transform.TransformerFactoryConfigurationError;
X>import javax.xml.transform.ErrorListener;
X>import java.util.Properties;

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

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


X>Код бина:


X>
X>package forum.beans;

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

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

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


X>Код JSP:


X>
X><%@ page contentType="text/html; charset=windows-1251" %>
X><html>
X><jsp:useBean id="indexBeanId" scope="session" class="forum.beans.indexBean" />
X><jsp:setProperty name="indexBeanId" property="*" />
X><body>
X><jsp:getProperty name="indexBeanId" property="text" />
X></body>
X></html>
X>


Боюсь что проблемы с конфликтами ClassLoader's. Положи xml-jars в tomcat-home/common/lib (если их там еще нет)
ICQ# 333355130
Проблема 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>
Re[2]: Проблема Xalan+JSP+JBean
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 22.03.04 14:23
Оценка:
Здравствуйте, Lucker, Вы писали:

L>Здравствуйте, x01001, Вы писали:


X>>Нужно используя Xerces обьеденить xml с xsl, а на выходе получить html.

X>>В JPS используеться bean, в котором я создаю экземпляр класса Kernel, затем вызываю метод getHTML() который должен вернуть HTML-код.

X>>Работаю под JBuilder 7

X>>Tomcat-4.0.3

X>>Подключаю к проекту нужные либы:

X>>тоесть
X>>xalan.jar
X>>xml-apis.jar
X>>xercesImpl.jar

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


X>>javax.servlet.ServletException: javax/xml/transform/TransformerFactoryConfigurationError

X>>и
X>>java.lang.NoClassDefFoundError: javax/xml/transform/TransformerFactoryConfigurationError

X>>


X>>Тестировал семпл из ксалановского пакета SempleTranform, сделан в виде приложения.

X>>Используються такие-же куски кода (то-есть я его от-туда выдрал вставил в свой проект и чуть-чуть переделал

X>>вот они:

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

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


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


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



X>>Код класса Kernel:

X>>
X>>package forum.engine;
X>>import forum.database.DBConnector;
X>>import java.util.ArrayList;
X>>import java.util.Iterator;
X>>import forum.database.Category;
X>>import forum.database.Forum;
X>>import javax.xml.transform.TransformerFactory;
X>>import javax.xml.transform.Transformer;
X>>import javax.xml.transform.stream.StreamSource;
X>>import javax.xml.transform.stream.StreamResult;
X>>import java.io.*;
X>>import javax.xml.transform.TransformerException;
X>>import javax.xml.transform.TransformerFactoryConfigurationError;
X>>import javax.xml.transform.ErrorListener;
X>>import java.util.Properties;

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

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


X>>Код бина:


X>>
X>>package forum.beans;

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

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

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


X>>Код JSP:


X>>
X>><%@ page contentType="text/html; charset=windows-1251" %>
X>><html>
X>><jsp:useBean id="indexBeanId" scope="session" class="forum.beans.indexBean" />
X>><jsp:setProperty name="indexBeanId" property="*" />
X>><body>
X>><jsp:getProperty name="indexBeanId" property="text" />
X>></body>
X>></html>
X>>


L>Боюсь что проблемы с конфликтами ClassLoader's. Положи xml-jars в tomcat-home/common/lib (если их там еще нет)

Вообще JBuilder не использовал, но если томкат пускается из него то надо настроить проект так, что бы нужные либы были подключены к проекту только при компиляции и редактировании (что-бы среда не ругалась на неизвестные классы). На этапе выполнения эти либы не должны быть доступны напрямую из класслоадера твоего веб-приложения (т.е. при деплое на томкат они не должны лежать в web-inf/lib).
ICQ# 333355130
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.