BackPrevious Page Next PageNext

Four Ways of Integrating JReport Server

Integrating by building a JReport Server WAR

Integrating by building a JReport Server EAR

Integrating by building a user WAR and embedding a self-contained JReport Server

Integrating by building a user EAR and embedding a self-contained JReport Server

To integrate JReport Server with your application server, you can either create a JReport Server WAR/EAR, or create your WAR/EAR and embed a self-contained JReport Server inside it. For how to create a JReport Server WAR/EAR, see Building a WAR/EAR file to Include a Self-contained JReport Server.

Integrating by building a JReport Server WAR

The self-contained JReport Server can be deployed as a single WAR file.

For example, you can create a JReport Server WAR file named jreport.war and the structure of the JReport Server WAR is as follows:

jreport.war

The following is a sample of the content in the web.xml file of the JReport Server WAR:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, 
Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd"> 

<web-app>

    <listener> 
        <listener-class>jet.server.servlets.JRServerContextListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>jrserver</servlet-name>
        <servlet-class>jet.server.servlets.JRServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>sendfile</servlet-name>
        <servlet-class>jet.server.servlets.SendFileServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>dhtml</servlet-name>
        <servlet-class>jet.web.dhtml.DHTMLlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>help</servlet-name>
        <servlet-class>jet.web.dhtml.JHelplet</servlet-class> 
    </servlet>

    <servlet-mapping>
        <servlet-name>jrserver</servlet-name> 
        <url-pattern>/jrserver/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>sendfile</servlet-name>
        <url-pattern>/sendfile/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>dhtml</servlet-name> 
        <url-pattern>/dhtml/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>help</servlet-name>
        <url-pattern>/help/*</url-pattern> 
    </servlet-mapping>

</web-app>

Integrating by building a JReport Server EAR

The self-contained JReport Server can be deployed as a single EAR file.

For example, you can create a JReport Server EAR file named jreport.ear and the structure of the JReport Server EAR is as follows:

jreport.ear

Following the Java EE standard, you should configure the META-INF/application.xml file before deploying the EAR:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" 
"http://java.sun.com/dtd/application_1_3.dtd">

<application>
    <display-name>Self-contained JReport Server</display-name>
    <module id="JReportWebModule">
        <web>
            <web-uri>jreport.war</web-uri>
            <context-root>jreport</context-root>
        </web>
    </module>
</application>

The contents in the web.xml of the JReport Server EAR are the same as those in web.xml of the JReport Server WAR.

Since the JReport Server library is included in jreport-lib of the EAR layer, you must specify Class-Path in the META-INF/MANIFEST.MF file. The contents below should be included in the MANIFEST.MF file:

Class-Path: jreport-lib/jrenv.jar jreport-lib/JRESServlets.jar jreport-lib/JREngine.jar ...

Class-Path is a list of all packages in the JReport Server library. Each package name should start with the prefix jreport-lib/, and you should use a blank space to separate package names.

Integrating by building a user WAR and embedding a self-contained JReport Server

You can embed a self-contained JReport Server into your WAR.

For example, you can create a WAR named MyApp.war, and then embed a self-contained JReport Server inside it. The structure of your WAR may be as follows:

MyApp.war

If you put the JReport WAR related JSPs to a sub folder, for example jreport, and this time the structure of your WAR may be as follows:

MyApp.war

To run JReport reports, you must add the following into WEB-INF/web.xml:

Integrating by building a user EAR and embedding a self-contained JReport Server

You can embed a self-contained JReport Server into your EAR in order to use JReport Server from EJB.

For example, you can create an EAR named MyApp.ear and then embed a self-contained JReport Server inside it. In the EAR, there is an EJB module used for initializing JReport Server. The structure of your EAR may be as follows:

MyEAR.ear

Following the Java EE standard, you should configure the META-INF/application.xml file before deploying your EAR:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" 
"http://java.sun.com/dtd/application_1_3.dtd">

<application>
    <display-name>EJB with Embedded JReport Server</display-name>
    <module id="MyEJBModule">
        <ejb>MyEjb.jar</ejb>
    </module>
</application>

Since the JReport Server library is included in the jreport-lib folder of the EAR layer, you must specify Class-Path in the META-INF/MANIFEST.MF file. The contents below should be included in the MANIFEST.MF file:

Class-Path: jreport-lib/jrenv.jar jreport-lib/JRESServlets.jar jreport-lib/JREngine.jar ...

Class-Path is a list of all packages in the JReport Server library. Each package name should start with the prefix jreport-lib/, and you should use a blank space to separate package names.

If you do not want to set the reporthome for the embedded self-contained JReport Server, but instead want to use JReport's default settings, there is no requirement for configuring the ejb-jar.xml. However, if you want to control the reporthome of the JReport Server, or specify a JNDI data source for JReport Server to use, you should first configure the ejb-jar.xml file using the <env-entry></env-entry> tags. For example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" 
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar id="ejb-jar_ID">
    <display-name>MyEJB</display-name>
    <enterprise-beans>
        <session id="JReportEJB">
            <ejb-name>JRptServer</ejb-name>
            <home>demo.JRptServerHome</home>
            <remote>demo.JRptServer</remote>
            <ejb-class>demo.JRptServerBean</ejb-class>
            <session-type>Stateless</session-type>

            <!-- Specify JReport reporthome directly
                <env-entry>
                <env-entry-name>jreport.rpthome</env-entry-name>
                <env-entry-value>/home/jreport</env-entry-value>
                <env-entry-type>java.lang.String</env-entry-type>
                </env-entry>
            -->

            <!-- JReport callback my CustomizedServerEnv -->
            <env-entry>
                <env-entry-name>jreport.servenv</env-entry-name>
                <env-entry-value>demo.JReportServerEnv</env-entry-value>
                <env-entry-type>java.lang.String</env-entry-type>
            </env-entry>

            <transaction-type>Bean</transaction-type>
        </session>
    </enterprise-beans>
</ejb-jar>

BackPrevious Page Next PageNext