[xep-support] Embedding XEP3 in a Java application

David Tolpin dvd at renderx.com
Mon Oct 28 02:55:22 PST 2002


> 
> 1) Is XEP re-entrant, i.e. can multiple threads run XEP simultaneously without
>     interference?

Yes, it is. XEP is reentrant, with a few carefully selected shared resources
accessible through synchronized calls. We use concurrent processing with XEP
extensively.

> 
> 2) Is there another way in the API to set the options than through system
>     properties? This is important because an application normally doesn't
>     have access to the system properties of the JVM running the application
>     server. It would also make the options global for the JVM. They would act
>     as global variables. This would make it impossible, for example, to choose
>     between PDF and PostScript depending on the request. Ideally the options are
>     passed through the stack.

All properties have corresponding variables and a way to set them; setting
properties is however a good way to change things. They do not interfere with
other system properties since all of them belong to com.renderx.xep domain.

Choosing a backend is not governed by a system property; it is handled in this
way by com.renderx.xep.Driver for the sake of tradition. Switching betwen backends
is accomplished by passing an instance of corresponding backend (which is actually
a org.xml.sax.ContentHandler) to the renderer. One does not need to change a property
to set an output format.

> 3) The user guide says in the description of the TMPDIR option that each JVM
>     must have its own tmp directory. Can I conclude from this that the
>     generated filenames are not unique? In an application server environment
>     this would be difficult to manage. Potentially two versions of XEP are
>     present in the system, because different applications use it but can't all
>     upgrade at the same time. One application must not impose a test cycle on
>     the others only because it needs an upgrade.
>     In J2EE this is solved very naturally by including the components in the ear
>     file, instead of installing them globally. Applications are insulated from
>     each other. A unique TMPDIR per JVM would make this impossible.

I don't understand this point. If you run two different copies of XEP, then you have
two different installations of XEP, each with a separate ROOT and configuration file.
In the same way you can specify a different temporary directory for each installation.
Please describe your problem.  I cannot imagine a case when a separate temporary directory
for each running Java Virtual Machine may be a problem.


> 4) For the same reason it should be possible for XEP to load the licence file
>     from the class path as a resource.

It is possible.

System.setProperty("com.renderx.xep.LICENSE","resource:com/renderx/xep/license.txt");

David Tolpin
-------------------
By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html



More information about the Xep-support mailing list