A Free JAVA JNDI naming service provider and MOM system over SSL secured sockets.
cyJNDI Copyright (c) 2000 by
Erica Andrews a.k.a. Li'L CJ.
Copyright (c) 2000 by Erica Andrews a.k.a. Li'L CJ.
cyJMS Copyright (c) 2000 by Erica Andrews
JNDIce Copyright (c) 2000 by Erica Andrews
CJ's MailerBean Copyright (c) 2000 by Erica Andrews
All rights reserved.
phrozensmoke ['at'] yahoo.com
More Of My FREE Java Software
** This software is currently UNMAINTAINED **
Overview | System Requirements | Package Contents | Features | Limitations | Known Bugs | Screen-shots | DOWNLOAD | Testing | LICENSE | DISCLAIMER
- 24MB of memory or better should do just>- 24MB of memory or better should do just fine: The server is VERY lightweight. (32MB+ for SSL recommended)Include In This Package:
- A J2EE/1.2 Java Virtual Machine or better. Sun's JDK/SDK 1.3 is highly suggested.
- The Java Naming and Directory (JNDI) API classes (javax.naming.) version 1.2.1 or better
- The Java Messaging Service (JMS) API classes (javax.naming.) version 1.0.2 or better
- The Java Secure Sockets Extension (JSSE) classes, version 1.0.1 or better.
- The JavaMail API classes (javax.mail.), version 1.1.3 or better
- The Java Activation Framework API classes (javax.activation), any recent version
- The Java Cryptography Extension API classyptography Extension API classes (javax.crypto), any recent version
NOTE: ALL of these API libraries are REQUIRED, even if you don't intend to use the SSL Secure Sockets or the remote terminal's e-mail feature. For information on how to properly install and configure the JSSE extension, and how to find and choose an SSL security provider, check out these pages at Sun:
You will also need an SSL security provider if you wish to run the application server in SSL-enabled mode. I recommend using the SSL provider supplied by Sun (bundled with the JSSE); however, any standard, JSSE-compliant SSL provider should work. Procuring and configuring an SSL provider is beyond the scope of this overview, and, therefore, your own responsibility.
- cyJNDI naming service version 1.0b with SSL support and other added encryptionFeatures:
- cyJMS messaging system version 1.0a
- JNDIce JNDI administration tool version 1.3b (check out this page for more information on JNDIce, and a stand-alone version.)
- Built-in and stand-alone terminal/telnet application for accessing your cyJNDI server both in SSL or non-SSL mode
- Built-in Topic and Queue browser
- Built-in Topic and Queue deployment tool
- A server activity monitor
- A setup program
- A Mailer bean which can send your log files to any email address you specify at the telnet-able terminal.
- Optional use of SSL/TLS secured sockets, on both the client and server side. (Enabled by default)
- Programmed entirely in Java
- A CONSOLE-FREE application server (No more having to stare at a black console window and read some lazy programmer's System.out.print's and printStackTrace calls)
- Low-memory usage (24MB or more should serve you just fine, 32MB+ recommended for SSL).
- Control over the server's port (The default is 21472)
- "Arial,Helvetica">- Control over the number of simultaneous connections.
- A persistent, heirarchal namespace, allowing JNDI-bound objects to survive a server crash (Persistence is optional, enabled by default. The persistence does NOT require the use of a database, saving overhead.)
- A fast JMS messaging service with minimal thread blocking. The only methods that block are TopicSubscriber.receive() and the QueueReceiver.receive() methods and their variations. Unlike most other JMS services. a call to Connection.start() or Session.run() will never cause a thread in your application to block. The JMS 1.0.2 spec does not require any methods besides receive() and receive(long timeout) to block, so there is no overhead from other methods blocking. You will NEVER have to call Connection.start(), Session.run(), and Subscriber/Receiver.receive() in separate threads, making development a snap.
- cyJMS supports both publish-subscribe (Topics) messaging and point-to-point messaging (Queues)
- cyJMS messaging persistence does NOT require the use of a database: saves overhead.
- Support for URLS in Initial Contexts
- The cyJNDI server is actually telnet-able. If the server is not using SSL you can telnet to the port with any telnet client. If SSL is being used, you may use the SSL-compatible telnet client included in the package.
- The ability to allow all connections, allow only selected connections, or block selected connections.
- Extensive logging of all server activities, including major errors and possible security incidents (failed logins)
- The ability to monitor client and administrative connections in real-time (or disable the monitoring)
- Support of JNDI authentication (mandatory as a security measure)
- Support for JMS authentication (optional)
- EXTENSIVE and THOROUGH JNDI namespace exploration (with the builtespace exploration (with the built-in version of JNDIce)
- EXTENSIVE and THOROUGH JMS message browsing with full Topic and Queue browsing
- cyJMS supports 5 of the JMS spec's optional JMSX message properties: JMSXUserID, JMSXAppID, JMSXGroupID, JMSXGroupSeq, JMSXRcvTimestamp
- Partial (almost complete) support for message selectors.
- Optional timed garbage collection
- A clean and easy-to-use GUI interface for deploying Topics and Queues, monitoring server activity, and exploring and administering the namespace.
- An easy to use Setup program to make configuring you cyJNDI-cyJMS simple, without having to deal with command lines, properties files, and other aggravating details.
- A telnet-able remote adminstration interface which includes the ability to:- Change usernames anfont size=-1> - Change usernames and passwords remotely
- Read system alerts about any potential security incidents or system errors.
- Have your cyJNDI-cyJMS log files mailed to any email address you specify (to facilitate remote monitoring)
- See who is currently logged on, either as an adminstrator or client
- List objects bound to your cyJNDI namespace (and their classes)
- Conduct lookups on objects bound to the namespace (and their classes)
- Unbind objects from the namespace
- List information about your system'formation about your system's setup
- And much, much more.
The Complete interface:
cyJNDI-cyJMS: provides easy browsing of
Topics and Queues, including extensive information about the history of
the Topic or Queue, its Subscribers/Receiver, any message selectors, and
the messages available.
Shown here, a Topic named "test", and a Queue named "testQ":
cyJNDI-cyJMS also allows for browsing published
or queued messages in great detail:
Deployment of new cyJMS Topics and Queues
is very easy with the built-in deplyJMS Topics and Queues
is very easy with the built-in deployment tool, eliminating the need for
dealing with command lines, pesky properties files, etc.
You can also explore your cyJNDI namespace
extensively with the built-in version of JNDIce
included in the package. Here, you will find all of your non-temporary
Topics and Queues listed in the namespace
Download cyJNDI-cyJMS version 1.0 beta:
By downloading and/or using cyJNDI-cyJMS, you agree to the license and disclaimer.
Download cyJNDI-cyJMS application server, including all client classes and documentation ( ~576 KB, .zip format)
After downloading, read the
file in the \docs\ tml
file in the \docs\ sub-directory for
information on installation and getting started.
cyJNDI-cyJMS was tested on several Windows computers running Win 95/98, with a memory range of 24MB -128MB, using Sun's JDK 1.2 and 1.3. This application has also been tested extensively in JPython 1.1. This application is VERY new and has not yet been tested on any other platforms or Java virtual machines. cyJNDI-cyJMS will most likely be tested on Linux very shortly, after which, I will post any new findings to this page.
- First and foremost, this application server is very NEW, so think of this distribution as a preview of what's to come, as opposed to a final release. Expect some bugs and things like that. Feedback and bug reports are welcome, of course.
- For now, cyJNDI is only a Naming service provider (as opposed to a Naming AND Directory service provider). So, there is currently no support for javax.naming.directory development or javax.naming.event development. Support r javax.naming.event development. Support for directories and events is optional according to the 1.2.1 spec; however, directory support, search capabilities, and event support are planned for the VERY near future. I expect to have full directory and searching support within the next couple of weeks and event support within, say, 3-4 weeks (whenever I find the time).
- The third limitation is regarding cyJMS: There is extensive support for message selectors, particularly the most common SQL-92 keywords. However, a few of the keywords required by the JMS 1.0.2 spec have not yet been implemented. These include: BETWEEN, NOT BETWEEN, IN, and NOT IN. These keywords are probably the least commonly used, and can easily be replaced in your message selector syntax by other keywords such as: bankAccount > 5 AND bankAccount <25 instead of bankAccount BETWEEN 5 AND 25
- This last one is not really a "limitation" so much as it is a fact of life: Please be aware that connections (both client and server-side) which use SSL/TLS secured sockets will be initially slower than non-secure connections. This delay is due to the standard SSL "handshake" conducted when a connection first begins. These delays are STANDARD with SSL. These delays are STANDARD with SSL. Handshakes can take anywhere between 2 and 15 additional seconds or more depending on the speed of your server, your server's load, and other factors. Of course, you have the option of enabling or disabling SSL as you see fit. However, if the data you are passing in the cyJNDI-cyJMS system is in any way "mission critical" or otherwise sensitive, you are strongly advised to use SSL secured sockets to protect yourself from individuals "spying" on your connections. If you choose not to use SSL, your connections should be fairly safe since, an added layer of lightweight encryption I created, which does not affect the speed of connections, is always in place.
- JPYTHON users: If you use cyJMS from the JPython prompt or a JPython program, you may experience a problem sending ObjectMessages. This problem usually occurs when setObject() is called. When a ObjectMessage is sent in which the object value is NOT null, you may receive a ClassNotFoundException for "org.python.core.PyJavaInstance". Even if you do somehow add "org.python.core.PyJavaInstance" to your classpath and get rid of the ClassNotFoundException, you will probably encounter a NotSerializableExcwill probably encounter a NotSerializableException directed at the object you supplied to setObject() and "org.python.core.PyJavaInstance" . This bug only seems to occur when an ObjectMessage is SENT. I have encountered no problems receiving ObjectMessages in JPython. It appears that somehow an instance of "org.python.core.PyJavaInstance" is getting "stuffed" into the sent Object. Note: I did not encounter this problem sending any type of message and calling Message.setObjectProperty("myObject", Object o). So, this could be an EASY work-around in JPython. The bug is specific to SENDING non-NULL objects in ObjectMessage using Message.setObject(Object o). This problem also is specific to JPython as far as I have seen (version 1.1). If you see this error any place else, send a bug report.
- JPYTHON users:<=-1>- JPYTHON users: If you use cyJNDI from the JPython prompt or a JPython program, you may experience a NameNotFoundException with Subcontext.lookupLink(Name name). This bug seems to arise when a SUB-context's lookupLink() method is called using a Name instead of a String. You will encounter a NameNotFoundException, even though you know that the object is definitely bound to the namespace. This problem seems to be specific to JPython and SUB-contexts, when lookupLink(Name name) is called instead of lookupLink(String name). This bug also only affects SUB-contexts, not regular contexts. I am working on a fix for this bug, so check back often. If you spot this bug in another place besides where I have described, send a bug report. The work around is to call Subcontext.lookupLink(String name) instead of looking up a Name, CompoundName, or CompositeName.
License and Copyright:
cyJNDI Copyright 2000 by
Erica Andrews a.k.a. Li'L CJ.
cyJMS Copyright 2000 by Erica Andrews
JNDIce Copyright 2000 by ica">JNDIce Copyright 2000 by Erica Andrews
CJ's MailerBean Copyright 2000 by Erica Andrews
All rights reserved.
This application is RESTRICTED
This application is NOT OPEN SOURCE.
The author of this application hereby grants the public unlimited *personal* use of this software provided it is *not* used for any commercial purposes or ventures whatsoever, is *not* used for any sort of profit, either directly or indirectly, and *no* portion of this software is modified in any way. No disassembly, decompilation, or other dealings with any source code from this software are permitted. This software may not be used by for-profit organizations/individuals, or used on computers or other ls, or used on computers or other data systems owned by corporations or other for-profit organizations, without the express, written consent of the author. Any use of this software which is not consistent with the aforementioned terms, without the written consent of the author, constitutes unauthorized, fraudulent misuse of the software, punishable in a court of law. By downloading and/or using this software, you agree to the terms above as well as the disclaimer.
By using this software, you
acknowledge that this software is distributed on an as-is basis, without
any warrantee of any kind, and
agree that the author of this software will not, under any circumstances, be held responsible for any damages, losses, or inconveniences derived from the use of this software.