[opencms-dev] Calling a java class from OC beta 2
Kevin McKenzie
kevin at mkid.demon.co.uk
Mon Nov 25 17:04:00 CET 2002
25/11/2002 14:20:14, "Assaf Nehoray" <anehoray at hotmail.com> wrote:
> Hi,
>
> I am trying to integrate between OpenCMS and another application which is
> java based. I am checking out how I can do that using JSPs. I wrote a jsp
> page in the root. In it I am trying to use a class(<jsp:useBean>) and then
> call it. I have placed the .class in the classes directory as well as in the
> root directory alas it cannot find it and I get a jsp error.
>
> I am using the new beta 2 version 5.0 where the directory structure is a
> little different. Since the documentation is not yet up to date I am
> clueless. Anyone can give me some simple guidance on how to call a java
> class/ application.
Hi Assaf,
I don't have an answer for you but thought I would share my experience, as it may help
others to provide an answer.
I have been looking at: 2.3.2. Setting data blocks dynamically.
My templates look like this:
testmaster2
<?xml version="1.0"?>
<XMLTEMPLATE>
<ELEMENTDEF name="contenttemplate">
<CLASS>com.opencms.template.CmsXmlTemplate</CLASS>
<TEMPLATE>testcontent</TEMPLATE>
</ELEMENTDEF>
<ELEMENTDEF name="frametemplate">
<CLASS>com.opencms.template.CmsXmlTemplate</CLASS>
<TEMPLATE>testframe</TEMPLATE>
</ELEMENTDEF>
<TEMPLATE> <ELEMENT name="frametemplate"/> </TEMPLATE>
</XMLTEMPLATE>
testframe
<XMLTEMPLATE>
<TEMPLATE><![CDATA[
<HTML>
<HEAD>
<TITLE>]]><method name="getTitle"/><![CDATA[</TITLE>
</HEAD>
<BODY>
<TABLE border width="100%" height="100%">
<TR height="30%">
<TH colspan=2 width="100%" align="center">
The Head section
</TH>
</TR>
<TR height="70%">
<TD width="20%" align="center" valign="top">
Navigation
</TD>
<TD width="80%" align="center">
]]><ELEMENT name="contenttemplate"/><![CDATA[
</TD>
</TR>
</TABLE>
</BODY>
</HTML>]]>
</TEMPLATE>
</XMLTEMPLATE>
testcontent
<?xml version="1.0" encoding="ISO-8859-1"?>
<XMLTEMPLATE>
<TEMPLATE>
<ELEMENT name="testelement"/>
<ELEMENT name="body"/>
</TEMPLATE>
<ELEMENTDEF name="testelement">
<CLASS>TestElement</CLASS>
<TEMPLATE>../elements/testelement</TEMPLATE>
</ELEMENTDEF>
</XMLTEMPLATE>
My Java class is as follows:
package com.text.opencms;
import com.opencms.template.*;
import com.opencms.file.*;
import com.opencms.core.*;
import java.util.*;
public class TestElement extends CmsXmlTemplate {
public byte[] getContent( CmsObject cms, String templateFile, String elementName,
Hashtable parameters,String templateSelector )
throws CmsException {
CmsXmlTemplateFile templateDocument = getOwnTemplateFile(cms, templateFile,
elementName, parameters, templateSelector);
templateDocument.setData("greeting","from KevKiwi!!!");
return startProcessing(cms, templateDocument, elementName,
parameters, templateFile);
}
}
I compiled my Java class and copied it to:
\WEB-INF\classes\com\test\opencms
I created page with the followinf properties:
Title: testpage2
State: new
Owner: (Admin)
Group: Administrators
When I try to display this page, I get the following error:
[CmsException]: 26 Wrong XML template class. Detailed Error: Could not initialize (sub-)
element for class "TestElement". [CmsException]: 29 OpenCms class loader error.
Detailed Error: Could not load template class TestElement. TestElement. Caught
Exception: >java.lang.ClassNotFoundException: TestElement<.
at com.opencms.template.cache.CmsElementLocator.get(CmsElementLocator.java:166)
at com.opencms.template.cache.A_CmsElement.checkProxySettings
(A_CmsElement.java:347)
at com.opencms.template.cache.A_CmsElement.checkProxySettings
(A_CmsElement.java:350)
at com.opencms.template.cache.CmsUri.callCanonicalRoot(CmsUri.java:129)
at com.opencms.template.cache.CmsElementCache.callCanonicalRoot
(CmsElementCache.java:148)
at com.opencms.launcher.CmsXmlLauncher.generateOutput(CmsXmlLauncher.java:263)
at com.opencms.launcher.CmsXmlLauncher.launch(CmsXmlLauncher.java:319)
at com.opencms.launcher.A_CmsLauncher.initlaunch(A_CmsLauncher.java:268)
at com.opencms.core.OpenCms.showResource(OpenCms.java:781)
at com.opencms.core.OpenCmsHttpServlet.doGet(OpenCmsHttpServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1012)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107)
at java.lang.Thread.run(Thread.java:536)
More information about the opencms-dev
mailing list