Skip to main content

J323 Engine

Java middleware that provides H.323 call control services to video-conferencing and IP telephony applications through JTAPI.

Date Posted: March 27, 2001

alphaworks tab navigation


Update: June 27, 2003 Version 5.0.0: Now supports H.323 Version 4 messages; media subsystem now based on latest API from JMF 2.1.1; and new stack fixes memory leak, dead lock, and other minor bugs.

Tab navigation

1. How do I get started with J232 Engine?

  1. Download and install the prerequisite Java packages.

  2. Unpack and install J323 Engine.

  3. Run CPhone or write some sample application. A special CPhone demo package is available with a step-by-step guide for exploring the main features of J323 Engine (see CPhone demonstration application). Other usage patterns are detailed in J323 Engine usage patterns.

2. Where can I find API documentation?

J323 Engine has two APIs: one for the application (Java Telephony API) and one for the media subsystem (TelephonyMedia/Java Media Framework API).

  • Java Telephony API: The main source of information is Sun's Web site. J323 Engine implements a subset of JTAPI and uses a naming convention for Address and Terminal objects that matches IP telephony addressing conventions. The pecularities of J323 Engine's JTAPI implementation are described in the JTAPI profile document which is part of J323 Engine's documentation.

  • TelephonyMedia API: This API is described in J323 Engine's documentation.

  • Java Media Framework API: The main source of information is Sun's Web site. J323 Engine makes use of a subset of JMF. This subset is documented in the JMF profile, which is part of J323 Engine's documentation.

3. How do I learn to write an application?

In order to write an application, one must understand the Java Telephony API. See "Getting Up to Speed with the Java Telephony API (JTAPI)" for more information.

Usually the best way to start building applications is to look at some sample code. Several sources of sample code are available:

  • The CPhone application is provided in source code as part of J323 Engine. It is a demonstration application that shows the basic and supplementary services provided by the J323 engine. See CPhone demonstration application.

  • The JTAPI documentation from Sun contains sample code for a simple JTAPI application. The code illustrates the basic functionality of both the core and call control packages. In order to run these samples with J323 Engine, small adaptations and bug fixes are required; these are detailed in Sample application code from the JTAPI documentation.

  • The IBM CallPath Beans package includes a sample JTAPI application called JtapiAppl. In IBM CallPath Beans, we explain how to run it with J323 Engine.

4. How can I debug my application?

J323 Engine is able to produce detailed traces on all layers. See the documentation.

5. What are the technical specifications of J323 engine?

See J323 features.

6. Can I use J323 Engine to control my modem? Can I use J323 Engine to send a fax?

No. J323 Engine is an implementation of the H.323 Version 2 protocol as defined by the ITU-T (International Telecommunication Union). The H.323 protocol is a Voice-over-IP protocol. It is used to establish phone calls over an IP network (such as the Internet). Therefore, J323 Engine will communicate only with H.323 endpoints. A H.323 endpoint can be a terminal (such as Microsoft NetMeeting) or a gateway (to connect to the PSTN [Public Switched Telephony Network] which is the "normal" telephony network).

7. When I start J323 Engine, I get the following error:
java.lang.NoClassDefFoundError: javax/telephony/ProviderObserver.

The JTAPI jar file is not in the classpath. See the installation instructions on how to obtain and configure the JTAPI jar file.

8. When I start J323 Engine, I get the following exception:
javax.telephony.ProviderUnavailableException: Cannot start the provider: null caused by javax/media/MediaEvent.

There are two possible causes:

  • The JMF jar file is not in the classpath.
  • There is an old version (below 2.1) of the JMF jar file in the classpath.

See how to obtain and configure the JMF in the installation instructions.

9. When I start J323 Engine, I get the following exception:
javax.telephony.JtapiPeerUnavailableException: JtapiPeer: DefaultJtapiPeer could not be instantiated.

You have the JTAPI interface definition (the JTAPI jar file), but you don't have a JTAPI implementation. The JTAPI implementation (the J323 Engine jar file j323.jar) is not in the classpath.

10. With my own JTAPI application, when I start J323 Engine, I get the following message:
Can't get Provider: javax.telephony.ProviderUnavailableException.

While you can get a default JtapiPeer by passing a null value, you need to know the Provider's name to get a Provider. You can find out the available services by calling the method JtapiPeer.getServices(), which returns an array of strings of services. You can normally use the name of a service to create a providerString needed to obtain a Provider:
String providerString = ";login=barbie;...";

11. When I start J323 Engine, I get the following message:
Can't get provider: javax.telephony.jtapipeer
(with jtapipeer written in all lowercase).

Java is a case-sensitive language. The Microsoft Windows operating system is not case-sensitive. It is likely that something went wrong during the unpacking of an archive that caused the case of filenames not to be preserved.

12. I start J323 Engine on Linux using the JMF-based media subsystem plugin (jmf.package=com.ibm.media.teljmf.TjTmProvider), and I have no sound.

To use JMF on Linux you must register it using JMFInit tools. Depending on your installation, this might have been done automatically or not. If not, you must manually register it.

13. I have no sound.

J323 Engine uses by default the "dummy media plug-in," which is a dummy implementation of the Java Media Framework (JMF). This implementation does not make use of any real device. It is provided for the following situations:

  • You don't have the required physical media devices (speaker, microphone, digital camera, etc.).

  • There is no native implementation of the JMF for the platform you are using; the JMF is required for controlling a physical device. This can happen, for example, if you use J323 Engine on AIX.

  • You have a resource conflict because several applications are trying to access the same device. This can happen if you run several instances of J323 Engine on one machine, because then they have to share one microphone.

To enable streaming of media, you must download and configure the JMF (see installation instructions). Then you must tell J323 Engine to use the JMF-based media subsystem plugin by specifying the following system property: jmf.package=com.ibm.media.teljmf.TjTmProvider.

14. It doesn't work at all; what's wrong?

Following is advice for common mistakes that most beginners make; these don't relate to JTAPI in particular, but rather to Java in general. Make sure you have done the following:

  • Download the JTAPI class files. These files are normally not packaged together with a JTAPI implementation and therefore you need to download them from the following Web site: http://www.javasoft.com/products/jtapi/.

  • Make sure that you have downloaded the class files. If you have only ".java" files, you will need to compile them.

  • Make sure the class files are in your classpath (a list of paths, typically provided by the environment variable CLASSPATH), otherwise the Java virtual machine will not find them.

  • Make sure that you also have an implementation of JTAPI. JTAPI is only an API. You need to find a implementation specific to your needs (see http://java.sun.com/products/jtapi/).

  • Make sure you have also included the class files of your implementation in your classpath. You should also look at the FAQ specific to the implementation you are using; it might help in solving specific problems.

15. I don't know anything about H.323. Where should I start?

Paul E. Jones maintains a Web site about H.323 in particular and Voice-over-IP in general. This is a good Web site both for beginners and for people with a deep understanding of H.323.

16. What is a gatekeeper?

A gatekeeper is an H.323 entity on the network that provides address translation and controls access to the network for H.323 endpoints (e.g., terminal, gateways, MCUs). In other words, a gatekeeper is some kind of DNS (Domain Name Server) for IP Telephony endpoints. It resolves addresses or phone numbers into IP addresses. In order for a user to be reachable, it must register to a gatekeeper. The registration process will add a mapping in the gatekeeper's table between the user's address (e.g., "5551234," "user@acme.com," "Fred," etc.) and the network address of the user's terminal (e.g., 192.168.13.74).

17. Do I need a gatekeeper?

No. A gatekeeper is an optional component. It is not necessary if you know the IP address of the terminal of the person you are calling. Nevertheless, it is much more convenient to use a gatekeeper.

18. What is a gateway?

A gateway is an H.323 endpoint which provides access to other telephony networks (such as Public Switched Telephony Netwok (PSTN)). It makes it possible to call an IP phone from a mobile phone, for example, or vice-versa.

19. What does an H.323 network look like?

An H.323 network is a regular IP network (the Internet or an intranet) to which are attached H.323 terminals, an H.323 Gatekeeper (optional) and an H.323/PSTN gateway (optional).

20. I know nothing about JTAPI. Where should I start?

You can start by reading the book Essential JTAPI by Roberts Spencer (1999, ISBN: 0-13-080360-X).

21. What is the hardware required for running JTAPI?

You cannot "run" JTAPI. JTAPI is not an application, not even a driver. JTAPI is only an API, more precisely a set of Java interfaces, and therefore there is nothing specific required for using JTAPI. However, if you create an application, you will need a JTAPI Provider. A JTAPI Provider is the base class that implements JTAPI. Different vendors have different implementations. Each implementation has its own requirements based on its specificity. For example, if you want to control a voice modem with JTAPI, you will need a modem card that is supported by the JTAPI implementation that you plan to use for controlling a voice modem; this is vendor-specific.

22. Does JTAPI also work on Linux (or Windows, AIX, Solaris, etc.)?

JTAPI is an API and does not contain an implementation. Therefore, it is available on all platforms. However, you need to find an implementation before being able to use JTAPI.

23. What is the difference between TAPI and JTAPI?

TAPI is the Telephony API from Microsoft. It is a native API for Windows platforms. JTAPI is the Java Telephony API. It is a 100% pure Java API and therefore it is cross-platform. You can also find JTAPI implementation based on TAPI. These implementation will be available only for Microsft Windows platforms.

24. What is a JTAPI Provider?

A JTAPI Provider is analogous to a TAPI service provider; it is the component supplied by the vendor that allows one to communicate with the vendors system using JTAPI.

25. Is JTAPI suitable for controlling a fax? Can I use JTAPI to make data transfers?

Not really. JTAPI is aimed more at controlling voice communications than controlling data communications. Therefore I beleive JTAPI is not suitable in this case.

26. Where do I find a JTAPI implementation? Where do I find a JTAPI Provider?

Sun maintains a list of vendors. However, this list is not up-to-date.

27. The list of JTAPI vendors maintained by Sun is incomplete; where do I find a more complete list?

In the section "Getting Up to Speed with the Java Telephony API (JTAPI)" of the J323 Web site.

28. There are several JTAPI implementations from IBM. What are the differences?

The nice thing about JTAPI is that it can serve as an API for completely different technologies, such as Computer/Telephony Integration (CTI), IP telephony, videoconferencing, and other synchronous communication technologies. The JTAPI implementations from IBM are as follows:

  • IBM CallPath is a product used for Computer/Telephony Integration, in which the typical application areas are call centers. The server is attached to a PBX. It enables the development of Java applications for third-party call control in private telephone networks.

  • J323 Engine implements an H.323 Terminal for video-conferencing and IP telephony on an IP network. The software enables the development of Java applications running on the H.323 Terminal that perform first-party call (and media) control.

  • The JTAPIChat package on alphaWorks implements a chat terminal for chat sessions between two hosts on an IP network. Chat is similar to telephony in that it is a synchronous communication service. The software enables the development of Java applications running on the chat terminal that perform first-party call (chat) control.

Trademarks




Related technologies