Run
the
Diffusion™
server
inside
Tomcat™
as a
Java™
servlet.
The
Tomcat
servlet container and
the
Diffusion
server
run in the same
Java
process and can communicate directly through shared memory.
Tomcat
and
the
Diffusion
server
listen on different ports. Clients can connect directly to
the
Diffusion
server
without going through
Tomcat
.
-
Configure an installation of
the
Diffusion
server
for how you want
your
Diffusion
servlet to behave.
Ensure, when editing the configuration files in the etc
directory, that all paths are expressed as absolute paths.
Ensure that a valid license file is present in the etc
directory.
Place any additional JARs that are required by your servlet in the
ext directory of your
Diffusion
installation.
-
Use the war.xml Ant script in the
tools directory of your
Diffusion
to package
the
Diffusion
server
as a WAR file.
The script creates the
diffusion.war file in the
build directory of your
Diffusion
installation.
The
diffusion.war file includes the following files and directories:
- META-INF/manifest.xml
- The manifest file for the WAR
- WEB-INF/web.xml
- This file contains information about the servlet.
- WEB-INF/classes
- This directory contains the configuration files for
the
Diffusion
server
. These files are copied from
the etc directory of the
Diffusion
installation.
- WEB-INF/lib/diffusion.jar
- The diffusion.jar file contains
the
Diffusion
server
- WEB-INF/lib
- This directory also contains JAR files copied from the
ext directory of the
Diffusion
installation.
- WEB-INF/lib/thirdparty
- This directory contains the third-party libraries that are
required by
the
Diffusion
server
. These files are
copied from the lib/thirdparty directory of
the
Diffusion
installation.
- lib/DIFFUSION
- This directory contains the browser
API
libraries. These files are
copied from the html/lib/DIFFUSION
directory of the
Diffusion
installation.
- Additional files and directories
- The WAR file contains additional files and directories that are
not listed here.
- The top level of the
WAR
file
contains resources that can be served by
Tomcat
.
-
Verify the WAR file.
-
Check that the WAR structure is the same as described in the previous
step and that all necessary files have been copied into the WAR
structure.
-
Check that the WEB-INF/web.xml file contains the
following information.
<servlet>
<servlet-name>Diffusion</servlet-name>
<display-name>Diffusion Servlet</display-name>
<servlet-class>com.pushtechnology.diffusion.servlet.DiffusionServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
The WAR is now ready to be deployed inside a
Java
web application server. The rest of this task
describes how to run the WAR inside of
Tomcat
, but you can use any
Java
web application
server.
-
Define the
Tomcat
connectors for incoming
connections in the Server.xml file.
A connector defines the port, protocol, and various properties of how the
connection is handled. The following is an example connector for handling
HTTP
1.1 connections on port 8080:
<Connector port="8080"
connectionTimeout="20000"
URIEncoding="UTF-8"
maxThreads="3"
protocol="HTTP/1.1" />
See the
Tomcat
documentation for more information.
-
When starting
Tomcat
, ensure that the
following parameters are set:
-
Set the diffusion.home parameter to the path to the
Diffusion
JAR
file.
-Ddiffusion.home=diffusion_installation/lib
Tomcat
must be aware of
Diffusion
.
-
Set the java.util.prefs.userRoot parameter to a
directory that
Tomcat
can write
to.
For example:
-Djava.util.prefs.userRoot=/var/lib/tomcat/diffusion/prefs/user
Diffusion
uses the
java.utils.prefs mechanism to store preference
information. If
Tomcat
, does not set
this parameter,
the
Diffusion
server
logs warning
messages.
Accessing publishers from
Tomcat
Diffusion
started within
Tomcat
allows
Tomcat
to access the publishers.
Tomcat
can be used to serve JSP files providing
dynamically generated content. These files can access publishers using the
publishers class static methods.
<%@ page import="java.util.List,com.pushtechnology.api.publisher.*" %>
<html>
<head>
<title>Publisher Information</title>
</head>
<body>
<table>
<tr>
<th>Publisher Name</th>
<th>Topics</th>
</tr>
<% for (Publisher pub : Publishers.getPublishers()) { %>
<tr>
<td><%= pub.getPublisherName() %></td>
<td><%= pub.getNumberOfTopics() %></td>
</tr>
<% } %>
</table>
</body>
</html>
The above is the content of a JSP file that return a list of the publisher
Diffusion
is running with the number of topics each
publisher owns.