User: fleury
Date: 00/09/01 16:53:51
Modified: . news.htm menu.htm jboss_win32_6.html
jboss_win32_5.html jboss_win32_4.html
jboss_win32_3.html jboss_win32_2.html
jboss_win32_1.html jboss_cmp4.html jboss_cmp3.html
jboss_cmp2.html jboss_cmp.html jboss6.html
jboss5.html jboss4.html jboss3.html jboss2.html
jboss1.html getting_startedJB2.htm
Added: . rmh_jboss.zip rmh_howto.html postgres.htm
oraclecmp.htm mssql.htm jndi_howto.html
jbuilder.htm jbossxml_howto.html jboss.dtd
ejbref_howto1.html ejbref_howto.html datasource.htm
contconf_howto1.html contconf_howto.html
Log:
initial doco update
Revision Changes Path
1.2 +354 -385 jbossweb/news.htm
Index: news.htm
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/news.htm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- news.htm 2000/08/29 23:11:01 1.1
+++ news.htm 2000/09/01 23:53:44 1.2
@@ -1,388 +1,357 @@
<html>
- <head>
- <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
- <meta name="generator" content="Adobe GoLive 4">
- <title>Untitled Document</title>
- <meta name="description" content="jBoss, initially known as EJBoss dates back
to March 1999 when Marc Fleury launched it, is a joint effort of developers to
implement Sun's J2EE and to produce a top-notch Open Source Application server.It will
enable the ployment of EJBs (Enterprise Java Bean) to deliver the coolest applications
online. It's completely free so download it and use it to deploy your beans.. ">
- <meta name="keywords" content="jBoss EJBoss Telkel Marc Fleury Rickard Oberg
J2EE Open Source Sun platform Appication Server EJB Beans Enterprise Java Bean GPL hot
deploy Enhydra WebLogic">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Untitled Document</title>
+ <meta name="description" content="jBoss, initially known as EJBoss
dates back to March 1999 when Marc Fleury launched it, is a joint effort of developers
to implement Sun's J2EE and to produce a top-notch Open Source Application server.It
will enable the ployment of EJBs (Enterprise Java Bean) to deliver the coolest
applications online. It's completely free so download it and use it to deploy your
beans.. ">
+ <meta name="keywords" content="jBoss EJBoss Telkel Marc Fleury Rickard
Oberg J2EE Open Source Sun platform Appication Server EJB Beans Enterprise Java Bean
GPL hot deploy Enhydra WebLogic">
+ </head>
+
+ <body bgcolor="white" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%"
height="1653">
+ <tbody>
+ <tr height="1958">
+ <td bgcolor="white" valign="top" height="1958">
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%">
+ <tbody>
+ <tr>
+ <td><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
+ </tr>
+ <tr height="25">
+ <td
height="25"><img alt="o" height="1" src="binary.htm" width="1"><font color="#ffcc00"
size="6" face="Myriad Web,Arial"><b>Current news</b></font></td>
+ </tr>
+ </tbody>
+ </table>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"></td>
+ </tr>
+ </table>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">August 21 - August 27 2000:
Transactions and caches</font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>Transactions and caches</b>:
Real life bugs appear as we release the BETA version. Some are deep some are shallow,
the important thing is that the flow of bug fixes is a crazy as ever! BETA-PROD here
we come, we will be on time!</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">August 14 - August 20 2000:
<b>API Compliance</b>,<b>SPEED</b>, <b>BETA Binary Release </b>, FreeBSD</font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>API Compliance</b>: Bug fixes
and "Not Yet Implemented" are done. As Marc Fleury and his crew work on it,
the API compliance of jboss is now almost 100%. We are finishing the latest callbacks
on the container and making it complete for the production release.</p>
+ <p><b>SPEED</b>: Our favorite Jndi
Knight, Rickard Oberg, has blasted the performance bottlenecks in RMI/JMX. The stuff
flies now ! Give it a spin and hear those engines roar...</p>
+ <p><b>BETA Release</b>: We are ahead
of schedule with the Production release. The latest binary release is a real beta now
that the spec compliance is there and speed is good. Let's move on to real life bugs
shall we? get your PR4-BETA release today</p>
+ <p><b>FreeBSD</b> We recieve news that
jboss happily runs under FreeBSD... great news! jboss is meant to be used in ISP
settings for those that want to offer "application hosting" and jboss is
leading the way with ease of use and deployment. Seems the dream is coming true, don't
you think?</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">August 7 - August 13 2000:
<b>DEADLINE SEPT 1ST</b>, <b>New Metadata</b>, Case Studies, New Transaction
Manager</font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>DEADLINE SEPT 1st</b>: Marc
Fleury says "I announce that we will be done with alpha by the end of this month.
That means that by September 1st we will put out a real beta with all the features and
QA done so that folks can use this in development and production with the ease of mind
that must come with it.". So there you have it jboss2 will be in BETA-PROD by
Sept 1st!</p>
+ <p><b>New Metadata</b>: In order to
simplify the use of jboss xml files, Sebastien Alborini has rewritten the metadata
package for jboss. It features ease of use stuff such as "differential" xml
files which means that when advanced configurations of the container are needed you
specify only what you need and nothing else. Making your deployment life easy with
jboss is our number 1 goal!</p>
+ <p><b>Case studies</b>: Following a
mail posted on jboss-user, everybody goes into sharing their experiences with J2EE
technology, a lot of good some bad, but all in all a varied mosaic of how people use
J2EE, great feedback!</p>
+ <p><b>New Transaction Manager:</b>
Marc Fleury posts an advanced JTA compliant implementation for the stand alone jboss.
The transaction implementation is inVM for this version. The implementation is also
pluggable so we can go to distributed stuff when we need to.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July 31 - August 6 2000:
<b>Security</b>, JMX Connector, jboss-dev</font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>Security</b>: Dan OConnor
commits the first version. The security stuff is implicitely passed around the
container and we will support all EJB 1.1 security requirements. Go help Dan put that
framework in place!</p>
+ <p><b>JMX</b>: Andreas Schaefer posts
the requirements for the JMX connector and the next generation way to access to the
server management infrastructure. jboss leads the way with JMX management of the
server and we intend to continue showing the industry where this management of J2EE
technology is going!</p>
+ <p>jboss-dev: The list is alive! come
join us on working-dogs! we cover every aspect of EJB and the container design, this
week it was the transaction and the ORB discussions that took place. Deep stuff, many
insights! Come join a group of experts and learn/work with them. Can your day job
*really* do that? join jboss-dev' mailing list.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July 24 - July 30 2000:
<b>jboss2.0 PR3 released</b></font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>jboss2.0 PR3</b>: NEW BINARY
online. Here it is, thanks to all that have helped this binary come online. Mucho bug
fixes, ease of use features and some new code ships... We will put up the mirrors very
soon. This is code is still officially "alpha" code, but you know... yeah...
well <a href="binary.htm">give it a try</a> and you will see ;-)</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July 17 - July 23 2000: pGO
groups, PR Needed! jboss-announce</font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>pGO groups</b>: Project Game
Over group leaders announced. We need more men and more brains! Join the troups and
embark on distant technology adventures, be all you can be! So we scale the management
behind the development of jboss2.0. Project leaders and task are assigned... did you
register for the war with us? did you sign up for project Game Over? Go to your
nearest recruitment center to enroll and lookup your new batallion. <a
href="project_game_over.htm">Do you want to know more?</a></p>
+ <p><b>PR Needed</b>: The war isn't
fought just with grit, guns and gruff, it's all about PR and love. We are looking for
a PR genius. Do you have some spare time to write and help us promote jboss? <a
href="mailto:[EMAIL PROTECTED]">drop us a note!</a></p>
+ <p><b>jboss-announce</b>: The volume
on the mailing lists is quite large still, even though we have split the lists. Some
folks are interested in just the announcements and have requested this list. <a
href="mailto:jboss-announce-on">Get on!</a> and thanks to Jon Stevens for setting it
up.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July 10 - July 16 2000:
Debugging, Getting Started, </font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>Debugging</b>: Serious debugging
of the 2.0 codebase is going on. All fronts are adressed at once as the codebases
stabilize. BMP behaviour, CMP Persistence Managers, EJB callbacks are all ironed out
as a massive effort goes on. We will be ready! oh yes! <a
href="project_game_over.htm">we will be ready!</a></p>
+ <p><b>Getting Started</b>: Ken Jenks
is leading the documentation and it is now separated in a "linux trail" and
"windows trail". Also we need the many of you that got their particular
databases running to help us put together a mini-howto for all the databases. You got
"ACME-RDBMS" to run with jboss? you got your jboss.xml and jaws.xml right?
share the knowledge! do a "ACME-RDBMS-in-jboss-mini-howto"!</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July 3 - July 9 2000:
<b>Tomcat</b>, Mirrors, <b>SpyderMQ</b>, "PooPoo wars"</font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>Tomcat</b>: Sylvain Laurent
posts a first page on the tomcat integration in jboss. It is integrated in one VM.
Deep optimizations are underway (sharing of classloaders) to make the complete J2EE
stack one of the fastest in the market. Project Game Over advances... J2EE based
products are almost all in open source now.</p>
+ <p><b>Mirrors</b>: jboss still victim
of its success! With still close to a 1000 thousand downloads a day it seems we max
our current line (the one we enhanced a couple of month ago). This explosive growth of
jboss demands real mirrors. Many of you have answered and we will set them up with the
soon to come new binary of jboss. Thanks for your help!</p>
+ <p><b>SpyderMQ</b>: Norbert Lataille
just commited the first version of the persistence and officially reaches 0.7.
SpyderMQ is of commercial quality grade or better thanks to your feedback and will
soon be a 1.0 product. Kudos to Norbert for a serious and in-depth work on this all
important part of the jboss J2EE infrastructure.</p>
+ <p><b>"PooPoo Wars"</b>:
Want to see starfighter starfighting? come and see what open source is all about. The
passion, the technology, the arguments, the technology, the insults, but at the end of
the day among bloodied warriors? superior technology ;-). The "Poopoo wars"
rage on jboss-dev!!! first row tickets right here! Step right in step right in! Man we
got to get Don King to sponsor us...</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June 26 - July 2 2000:
Security, Transactions, Marius, MetaData </font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>Security</b>: On Monday, Dan
OConnor posts a first draft of a security proposal for jboss. Integration of JAAS,
management of users are integrated in this proposal.</p>
+ <p><b>Transactions</b>: Aaron Mulder
takes a crack at rewriting the transaction manager. A new implementations that treats
JTS for what it is worth is needed. We are trying to let go of legacy, reuse the good
ideas and see what comes out of it. The first transactions work on Sunday.</p>
+ <p><b>Marius</b>: Andy Dwelly, the
lead developer behind the critically acclaimed "Marius" writes to us to
submit a first cut of the documentation framework with Marius. Looks promising and we
will try to bring some developer documentation under that framework.</p>
+ <p><b>MetaData</b>: EJX needs to
separate MVC and we are undertaking the creation of the metadata package in jboss.
Heavy discussions on the mailing lists. Juha Lindfors and Aaron Mulder take a first
pass at it.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June 19 - June 25 2000: Zoap,
TestSuite, Project Game Over, Getting Started</font></td>
+ </tr>
+ </table>
+ </p>
+ <p><b>ZOAP</b>: Dr Christoph Jung,
submits a new access layer for jboss2.0. It is based on SOAP and not on RMI. The
invocation layer of the container was cleanly abstracted and we will launching an
official project of jboss for this invocation plugin. It seems there is
tremendous interest in the industry for a SOAP enable J2EE server.</p>
+ <p><b>JCTS</b>: Peter Braswell submits
a first draft of JCTS. A complete test suite for jboss is in the works. It is
separate from Zola, which will focus more on the application programming model and
giving examples.</p>
+ <p><b>Project Game Over</b>: Project
Game Over is officially launched! <a href="game_over.htm">what is Project Game Over
?</a></p>
+ <p><b>Documentation</b>: Kevin Boone
submits a very needed "<a href="getting_startedJB2.htm">Getting Started</a>"
with jboss2.0. It is very complete with deployment packaging, and programmers
instructions.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June 12 - June 18 2000:
JMX Expert group, Cocobase, BMP, <b>BUZZ</b></font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Following the after glow of Java
One...</p>
+ <p><b>jboss/Telkel</b> is part of the
<b>JMX in J2EE expert group at SUN</b> Microsystems. All of our
configuration and dynamic binding of the server is done with JMX. Since Telkel
is focusing its expertise on the large systems management we are really proud to be
invited to share what we know about J2EE online management. Come and share the
knowledge with us through the jboss community. Now we don't just implement the spec
with jboss, we also write it ;).</p>
+ <p><b>Cocobase, </b>the
O/R mapper will be integrated as a plugin in jboss 2.0. Cocobase already
integrates with other containers with open source code and we have agreed to adapt the
code to jboss. The cocobase-jboss plugin project will be launched soon.</p>
+ <p><b>BMP support: </b>assembling
the pieces of the puzzle is being done in muti-task! BMP wiring is plugged in by
Stephan Gruschke in one weekend. Quite an impressive feat..</p>
+ <p><b>Help pours in: jboss 2.0 modular
design is a success!</b> Since we now follow the modular design and interceptors it is
fairly easy for folks to get in the code base and make a difference. We see
mucho help pouring in and documentation being put in place. The bee-hive is alive!</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June 5 - June 11 2000:
<b>JAVA-ONE</b>!</font></td>
+ </tr>
+ </table>
+ </p>
+ <p>What a blast!</p>
+ <p>The woodstock of computer science
lived up to its reputation... the bands (conferences) sucked but the real show was as
usual in the people and the crowd.</p>
+ <p>Le who's who of J2EE came by
our booth and many contacts were taken. From Vlada Matena to Linda DeMichiel, to
WebLogic's VP of engineering we saw everyone. But most importantly we thank the
many of you that came by and expressed support, enthusiasm, offered help, and helped
spread the buzz and those that just came to introduce themselves. We had a blast. The
conference with RMH went fine, except that we had forgotten our slides and
did the open source thing of "welcome to the future" (now imagine it). Most
notably an analyst came by and said "you are the fastest growing application
server today" and that "All the analysts are watching you".. hee hee we
feel like rock stars and well we like it!. More than anything we finally became aware
of the amazing buzz that surrounded jboss at JavaOne. The presentation on Open Source
J2EE on Linux obviously added to that growing buzz. Buzz is a funny thing, it
comes and g!
oes, right now we are IT! so let's not drop that ball and let's capitalize on our
momentum!</p>
+ <p>We have had tremendous feedback on
the jboss2.0 architecture and the modular approach to distributed software development
in open source. The press talks about us saying that we are the next "test case
of open source". Project Game Over also lights some eyes... people join in and
grin...</p>
+ <p>It could be that there will be less
vendors at java one next year, that would be nice, it would cost a little less, we
could have a slightly bigger booth and we wouldn't be smothered by the Gemstone ladies
(althought that part was nice) with long legs, wonderful b**bs, what the application
server? where? gad, I really love what you do, could you tell me more about your
wonderful cache? that's right baby cache is king, cache is king...</p>
+ <p><a
href="javaone_site/javaone.htm">PICTURES RIGHT HERE!!!!</a></p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May 29 - June 4 2000: New
contributions, jboss2.0, <b>Minerva</b></font></td>
+ </tr>
+ </table>
+ </p>
+ <p>This week we understand that
jboss2.0 is going to be able to scale the development of the organization. The modular
design and the clean isolation of contributions enables people to work on isolated
parts of the code (if they are lucky)</p>
+ <p><b>Wednesday</b>: jboss 2.0
stateful bean implementation gets a face lift and the needed work is done. Numerous
bug fixes as the code base stabilizes fast.</p>
+ <p><b>Friday</b>: Aaron Mulder
submits <b>Minerva </b>a high level pool management plugin for jboss. Minerva is now
shipped as default with jboss and the new pool management will interest those of you
that need pools for those pricey Oracle connections.</p>
+ <p><b>Saturday: </b>3 new contributors
added to jboss 2.0. The modular design enables multiple contributions in
parallel. We add Justin Forder (Jaws), Dan christopherson (zola) and Aaron
Mulder to the list of contributors... bravo and thanks to them, keep it coming.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May 22 - May 28 2000: jBoss
advances on all CVS fronts. </font></td>
+ </tr>
+ </table>
+ </p>
+ <p>A lot of CVS commits this week as
all projects of jBoss advance. Help is pouring and the state of all the projects
progresses fast.</p>
+ <p><b>Tuesday</b>: <b>jBoss 2.0</b>. A
lot of bug reports and frantic fixes pace the last days. jBoss 2.0 reaches spec
compliance and stability fast as all development and testing effort focuses on this
version released only weeks ago. We recieve praise on the state of the container and
it feels good, we will be ready by JavaONE, oh yes! we will.</p>
+ <p><b>Wednesday</b>: <b>Jaws</b>.
Mucho functionality is required on Jaws and it seems that O/R mapping is everyone's
favorite topic of discussion. Everyone has a favorite database that needs a particular
Mapping. XML mapping permits us to define pretty much any database, mapping it all
takes some time. Jaws is moving fast.</p>
+ <p><b>Thursday</b> <b>spyderMQ</b>.
The little spyder is growing big. Norbert Lataille commits an advanced implementation
of the queues and moves to 0.3. The topic selection is also coded so that complex
queries on the topics can be specified. spyderMQ is looking more and more like an
advanced JMS implementation. 0.5 coming fast and furious.</p>
+ <p><b>Friday</b>: <b>Webstore</b> i18n
support for webstore, you can now try the ZOL implementation in many languages.
JSP/Servlet and EJB in mucho ways.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May 15 - May 21 2000: J1, GPL
revision, Website maxed, <b>10000 downloads </b></font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Another Big Week for jBoss with
close to 600 mails on the combined mailing lists. Folks are getting used to the mail
split and discussion happen on Jaws, spyderMQ, jBoss-dev, jBoss-user and Zola</p>
+ <p><b>Monday</b>: We will be at
JavaONE. Thanks to RMH (a graduate of the group) for inviting us to the BOF on J2EE
open source. We will also be on the Telkel stand at J1, pays us a visit, come to the
BOF.</p>
+ <p><b>Tuesday</b>: Some folks
need the information on the GPL to be clearly layed out. We specify in a NOTE just
like it is done in Linux that we consider beans and applications to be "normal
usage" of our container.</p>
+ <p><b>Wednesday</b>: Website
down! with too many downloads the bandwidth is maxed on the old website. There was a
service interruption this morning and we apologize to all the visitors that were
greated with "404". The site is back up with a new bigger provider.</p>
+ <p><b>Friday</b>: <b>10000
downloads in 10 days! jBoss2.0 is a smashing success! </b>With about 1000 downloads
per day jBoss must be the fastest growing application server! No wonder the website
went down...</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May 8 - May 14 2000: Le Board,
new Website, <b>Bugzilla</b>, Mail split, <b>JAWS</b></font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Another Big Week for jBoss with
close to 500 mails on the combined mailing lists. The flow is big, and we are
splitting the mailings list.</p>
+ <p>Monday: We announce the
composition of the board of jBoss. Early members are Marc Fleury, USA, Rickard Oberg,
Sweden, Juha Lindfors, Finland, Oleg Nitz, Ukraine and Dan O'Connor USA. This
board does the usual, vote on patches, vote on 3rd party integration, vote...</p>
+ <p>Tuesday: NEW WEBSITE!!!
you are checking it out.</p>
+ <p>Thursday: Bugzilla.
Management of the bugs, reports and features is growing out of hand. We have
installed the Open Source standard, Bugzilla.</p>
+ <p>Saturday: JAWS mailing list is
up. Our favorite little austrilian shark is up at [EMAIL PROTECTED] JAWS is a
powerful little O/R tool, join it's mailing list and feed the fish!</p>
+ <p>Sunday: Mailing list split.
Due to the very high volume on jBoss we have decided to split the mailing lists.
ejboss now moves to jboss-user and jboss-dev. Same great place working-dogs.com,
thanks to jon*.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May 1st - May 7 2000: PR2,
Linux JDK1.3, JavaONE</font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Tuesday: jBoss1.0 PR2 is released.
jBoss1.0 moves in bug-fixing mode and development moves to jBoss2.0. Some bug fixes in
this version, some enhancements 1.0 final here we come</p>
+ <p>Wednesday: Major news...
IBM<b> </b>releases the much expected<b> JDK1.3 on Linux. </b>jBoss decided to
standardize on 1.3 long time ago, cool technology is what this is all about and now
our Linux penguin friends can play with us. Thank you!</p>
+ <p>Thrusday: Gary Meyer from Vitria
will be talking about jBoss at JavaONE during his "<b>Enterprise Java on Linux
HOWTO</b>" presentation and has given us a heads up!. Dude! thanks, we will get
you going.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April 24 - April 30 2000: Test
integration, <b>spyderMQ</b>, jBoss 2.0 on Linux</font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Monday: Zol and jBoss*.0
integrate their test suites. Zola becomes the default test suite for jBoss.</p>
+ <p>Tuesday: <b>spyderMQ is
released</b>. jBoss believes that JMS will likely lie at the heart of a scalable
implementation. We get the message! Norbert Lataille the lead developer announces the
availability of the 0.1 source code and the mailing list on egroups.</p>
+ <p>Friday: jBoss 2.0 on Linux.
Back by popular demand! Rickard Oberg delivers a <b>jBoss 2.0 on Linux</b>
(1.2.2) version of jBoss2.0. Now folks on Linux can work on the latest and greatest
electronica from the jBoss gang.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April 17 - April 23 2000:
<b>Board formation, jBoss 2.0</b></font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Two major events this week, a busy
one with north of 300 mails on the list.</p>
+ <p>Wednesday: Two major events
this week. First the announcement of the new<b> Board formation</b> for the jBoss
organization. jBoss 2.0 with its modular approach makes way for massive parallel
development and collaboration. jBoss will now be headed by a board of 5 to manage CVS,
the people, the outside communication and vote on major issues. We feel it is the
right thing to do at this exciting stage and given the breath taking rate of growth of
jBoss. Expanded management should enable us to scale this modular container.
Marc Fleury will appoint the first members.</p>
+ <p>Saturday: Rickard Oberg posts the
<b>first version of jBoss 2.0 in CVS</b>... go get it, it is revolutionary, all JMX,
all componentized, same forward thinking engineering... come code the future with us
and <b>this</b> is the future (applause in the room).</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April 10 - April 16 2000:
Hypersonic, EJB References and Debugging</font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Tuesday: a lively mail thread
is started on the mailing list. It discusses the default database that is
shipped with jBoss. We talk about many of them, most notably HypersonicSQL and
instantDB. Both look good and can be redistributed, a test version with HypersonicSQL
is bundled by Marc Fleury and immediately available.</p>
+ <p>Thursday: a nagging bug, first
identified by juha lindfors and corrected by Dan O'Connor is integrated by Marc
Fleury. We can now reference the other EJB's from the java: namespace in
JNDI, neat'o.</p>
+ <p>Sunday: A must see feature... tired
of seeing all of your messages in one console, tired of not being able to call
system.out from your beans. jBoss just introduced a simple yet powerful feature for
bean debugging: the capacity to overwrite the out messages with the standard
Tracer... neat messages. jBoss 2.0 takes this even further.
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April 3 - April 9 2000: jBoss
2.0, name change, Rickard Oberg, PR1</font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Monday: Following the success
of the conference and in keeping the pace up, Rickard announced the "soon to be
available" jBoss2.0. Just like its predecessor, jBoss1.0, jBoss 2.0 will set
ground breaking features for the rest of the industry to watch. Just like we
introduced dynamic Proxy based designs, we move forward with JMX based
administration and full componentization of the container. jBoss 2.0 is a fully
modular container it will enable all parties to simply integrate their software and
configure the container to suit their particular needs.</p>
+ <p>Wednesday: EJBoss will change its
name, we have chosen and reserved and trademarked the name "jBoss". We
drop the "e" as we hear that e-commerce is out of fashion anyway ;-). Plus
jBoss sort of sounds better than EJBoss don't it? try it you will see that it rolls
well on the tongue "jay...Boss" :)</p>
+ <p>Friday: Rickard Oberg will join the
Telkel staff full time. Telkel is starting to look like the "who's who" of
jBoss;-). Rickard will be able to dedicate himself fulltime to coding the server and
it's kernel and that is cool ...</p>
+ <p>Friday: jBoss in PR1. A
public release of the 1.0 version.</p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">March 27 - April 2 2000:
O'Reilly conference a roaring success</font></td>
+ </tr>
+ </table>
+ </p>
+ <p>This week Marc Fleury and Rickard
Oberg presented at the O'Reilly conference on Java. It was great to finally get to
meet many of you and put names on faces. It is good to hear your feedback and see that
jBoss is used in the field. Many contacts were taken, many talks initiated and most
interesting was the talk with Graig McLanahan of SUN/Tomcat. We will integrated Tomcat
and jBoss. The talks with the SUN were also very interesting, our project is
clearly percieved as the leader in the field and it was interesting to hear the plans
that SUN has for the open source. They spoke warmly of jBoss and our technology
"we were told it's not that low end" was the remark (pun) of one of the
proeminent figures of EJB... hee hee who said it was low-end? . </p>
+ <p>
+ <table border="0" cellspacing="0"
cellpadding="0" width="100%">
+ <tr>
+ <td valign="top"
bgcolor="#eeeeee"><font size="4" face="arial,helvetica">March 20 - March 26 2000: DR2
update, JAWS update</font></td>
+ </tr>
+ </table>
+ </p>
+ <p>Wednesday: A new version of DR2 is
posted. It contais many bug fixes from the early reports, mainly the class
loader glitches.</p>
+ <p>Thursday: Rickard Oberg posts
another exciting enhancement for jBoss 2.0, it will come with a mapping for full
finders and a graphical tool to select the fields you want to work on. With full
R->O mapping jaws, still a "one nostril" implementation will cover
80% of the OR needs out there. And if it doesn't? well somebody has to
make a living selling those pricey OR mappers to you ;-)</p>
+ <p>Sunday: Failed interposition bug
solved by Dan O'Connor. </p>
+ <center>
+ <p><a
href="http://www.mail-archive.com/ejboss%40list.working-dogs.com/"><font
size="1">(hey, pst! working-dogs is where it's at)</font></a></p>
+ <p><a
href="news0400.htm"><font size="6"><b>OLDER NEWS</b></font></a></p>
+ </center>
+ <p>
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%">
+ <tbody>
+ <tr>
+ <td
bgcolor="white" valign="bottom" width="11"><img src="picture/corner-sw-small.gif"
width="11" height="11"></td>
+ <td
bgcolor="white" width="100%"></td>
+ <td
bgcolor="white" width="21"></td>
+ <td
width="4"></td>
+ </tr>
+ <tr>
+ <td
bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm" width="1"></td>
+ <td
bgcolor="#99cc66" width="100%">
+ <table
border="0" cellpadding="0" cellspacing="0" width="100%">
+
<tbody>
+
<tr bgcolor="#99cc66">
+
<td width="100%"> </td>
+
</tr>
+
</tbody>
+
</table>
+ </td>
+ <td
bgcolor="#666699" width="21"><img src="picture/corner-e.gif" width="22"
height="22"></td>
+ <td
width="4"></td>
+ </tr>
+ <tr height="89">
+ <td
bgcolor="white" valign="top" width="11" height="89"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
+ <td
align="right" height="89" width="100%">
+ <table
border="0" cellpadding="0" cellspacing="0" width="100%" height="89">
+
<tbody>
+
<tr>
+
<td valign="top" width="648"></td>
+
<td valign="top" width="10"></td>
+
<td align="right" valign="top" width="10"> </td>
+
</tr>
+
</tbody>
+
</table>
+ </td>
+ <td width="21"
height="89"><img alt="o" height="1" src="binary.htm" width="1"></td>
+ <td width="4"
height="89"></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td bgcolor="white" valign="top" width="170"
height="1958">
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%">
+ <tbody>
+ <tr>
+ <td> </td>
+ </tr>
+ <tr>
+ <td><img
alt="o" height="1" src="binary.htm" width="1"><font color="#424264" face="Myriad
Web,Arial" size="1"> </font></td>
+ </tr>
+ </tbody>
+ </table>
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%" height="394">
+ <tbody>
+ <tr>
+ <td
bgcolor="#54547f">
+ <div
align="right">
+
<img src="picture/corner-w.gif" width="10" height="22"></div>
+ </td>
+ <td
bgcolor="#336600" width="100%" nowrap><font face="Myriad Web,Arial" color="white"
size="3"><b>Java One</b></font></td>
+ <td
bgcolor="#396c06"><img alt="o" height="1" src="picture/blank.gif" width="1"></td>
+ </tr>
+ <tr height="372">
+ <td
height="372"></td>
+ <td
bgcolor="#ffcc00" width="100%" height="372">jBoss was present at JavaONE 2000 as a
guest in Telkel's booth . jBoss is clearly becoming the standard j2ee open source
effort. Thanks for all of those that stopped by and the good buzz.
+
<p>Keep the buzz going round and round. You can see the pictures <a
href="javaone_site/javaone.htm">here</a>.</p>
+
<p>jBoss now has a new logo,</p>
+
<p><b>You love jBoss or you are powered by jBoss</b>? Feel free to use this logo on
your site</p>
+
<p><img height="60" width="159" src="picture/powered_by_jboss_flat_metal.gif"></p>
+ <p><a
href="logos.htm">More logos....</a></td>
+ <td
bgcolor="#99cc66" height="372"></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td bgcolor="#bfbffe" height="1958"></td>
+ </tr>
+ </table>
+ </body>
- <body bgcolor="white" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
- <table border="0" cellpadding="0" cellspacing="0" width="100%" height="1653">
- <tbody>
- <tr height="1958">
- <td bgcolor="white" valign="top" height="1958">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td><img src="picture/corner-nw-small.gif" width="11" height="11"></td>
- </tr>
- <tr height="25">
- <td height="25"><img alt="o" height="1" src="binary.htm" width="1"><font
color="#ffcc00" size="6" face="Myriad Web,Arial"><b>Current news</b></font></td>
- </tr>
- </tbody>
- </table>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"></td>
- </tr>
- </table>
- <p>
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4"
face="arial,helvetica">August 21 - August 27 2000: Transactions and caches</font></td>
- </tr>
- </table>
- <p></p>
- <p><b>Transactions and caches</b>: Real life bugs appear as we release the BETA
version. Some are deep some are shallow, the important thing is that the flow of bug
fixes is a crazy as ever! BETA-PROD here we come, we will be on time!
-<p>
-
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4"
face="arial,helvetica">August 14 - August 20 2000: <b>API
Compliance</b>,<b>SPEEEEED</b>, <b> BETA Binary Release </b>, FreeBSD</font></td>
- </tr>
- </table>
- <p></p>
- <p><b>API Compliance</b>: Bug fixes and "Not Yet Implemented" are done. As
Marc Fleury and his crew work on it, the API compliance of jboss is now almost 100%.
We are finishing the latest callbacks on the container and making it complete for the
production release.
-
- <p>
- <b>SPEED</b>: Our favorite Jndi Knight, Rickard Oberg, has blasted the
performance bottlenecks in RMI/JMX. The stuff flies now ! Give it a spin and hear
those engines roar...
- <p>
-<b>BETA Release</b>: We are ahead of schedule with the Production release. The
latest binary release is a real beta now that the spec compliance is there and speed
is good. Let's move on to real life bugs shall we? get your PR4-BETA release today
-
-<p><b>FreeBSD</b> We recieve news that jboss happily runs under FreeBSD... great
news! jboss is meant to be used in ISP settings for those that want to offer
"application hosting" and jboss is leading the way with ease of use and deployment.
Seems the dream is coming true, don't you think?<p>
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4"
face="arial,helvetica">August 7 - August 13 2000: <b>DEADLINE SEPT 1ST</b>, <b> New
Metadata</b>, Case Studies, New Transaction Manager</font></td>
- </tr>
- </table>
- <p></p>
- <p><b>DEADLINE SEPT 1st</b>: Marc Fleury says "I announce that we will be done
with alpha by the end of this month. That means that by September 1st we will put out
a real beta with all the features and QA done so that folks can use this in
development and production with the ease of mind that must come with it.". So there
you have it jboss2 will be in BETA-PROD by Sept 1st!
-
- <p>
- <b>New Metadata</b>: In order to simplify the use of jboss xml files,
Sebastien Alborini has rewritten the metadata package for jboss. It features ease of
use stuff such as "differential" xml files which means that when advanced
configurations of the container are needed you specify only what you need and nothing
else. Making your deployment life easy with jboss is our number 1 goal!
- <p>
-<b>Case studies</b>: Following a mail posted on jboss-user, everybody goes into
sharing their experiences with J2EE technology, a lot of good some bad, but all in all
a varied mosaic of how people use J2EE, great feedback!
-<p><b>New Transaction Manager:</b> Marc Fleury posts an advanced JTA compliant
implementation for the stand alone jboss. The transaction implementation is inVM for
this version. The implementation is also pluggable so we can go to distributed stuff
when we need to.<p>
-
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July
31 - August 6 2000: <b>Security</b>, JMX Connector, jboss-dev</font></td>
- </tr>
- </table>
- <p></p>
- <p><b>Security</b>: Dan OConnor commits the first version. The security stuff
is implicitely passed around the container and we will support all EJB 1.1 security
requirements. Go help Dan put that framework in place!
-
- <p><b>JMX</b>: Andreas Schaefer posts the requirements for the JMX connector
and the next generation way to access to the server management infrastructure. jboss
leads the way with JMX management of the server and we intend to continue showing the
industry where this management of J2EE technology is going!
- <p>jboss-dev: The list is alive! come join us on working-dogs! we cover every
aspect of EJB and the container design, this week it was the transaction and the ORB
discussions that took place. Deep stuff, many insights! Come join a group of experts
and learn/work with them. Can your day job *really* do that? join jboss-dev' mailing
list.<p>
-
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July
24 - July 30 2000: <b>jboss2.0 PR3 released</b></font></td>
- </tr>
- </table>
- <p></p>
- <p><b>jboss2.0 PR3</b>: NEW BINARY online. Here it is, thanks to all that have
helped this binary come online. Mucho bug fixes, ease of use features and some new
code ships... We will put up the mirrors very soon. This is code is still officially
"alpha" code, but you know... yeah... well <a href = "binary.htm">give it a try</a>
and you will see ;-)
- <p>
-
-
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July
17 - July 23 2000: pGO groups, PR Needed! jboss-announce</font></td>
- </tr>
- </table>
- <p></p>
-
- <p><b>pGO groups</b>: Project Game Over group leaders announced. We need more
men and more brains! Join the troups and embark on distant technology adventures, be
all you can be! So we scale the management behind the development of jboss2.0.
Project leaders and task are assigned... did you register for the war with us? did you
sign up for project Game Over? Go to your nearest recruitment center to enroll and
lookup your new batallion. <a href="project_game_over.htm">Do you want to know
more?</a>
- <p><b>PR Needed</b>: The war isn't fought just with grit, guns and gruff, it's
all about PR and love. We are looking for a PR genius. Do you have some spare time
to write and help us promote jboss? <a href="mailto:[EMAIL PROTECTED]">drop us a
note!</a>
-<p><b>jboss-announce</b>: The volume on the mailing lists is quite large still,
even though we have split the lists. Some folks are interested in just the
announcements and have requested this list. <a href="mailto:jboss-announce-on">Get
on!</a> and thanks to Jon Stevens for setting it up.
-<p>
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July
10 - July 16 2000: Debugging, Getting Started, <font></td>
- </tr>
- </table>
- <p></p>
- <p><b>Debugging</b>: Serious debugging of the 2.0 codebase is going on. All
fronts are adressed at once as the codebases stabilize. BMP behaviour, CMP
Persistence Managers, EJB callbacks are all ironed out as a massive effort goes on.
We will be ready! oh yes! <a href="project_game_over.htm"> we will be ready!</a>
- <p><b>Getting Started</b>: Ken Jenks is leading the documentation and it is
now separated in a "linux trail" and "windows trail". Also we need the many of you
that got their particular databases running to help us put together a mini-howto for
all the databases. You got "ACME-RDBMS" to run with jboss? you got your jboss.xml and
jaws.xml right? share the knowledge! do a "ACME-RDBMS-in-jboss-mini-howto"!
- <p>
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">July
3 - July 9 2000: <b>Tomcat</b>, Mirrors, <b>SpyderMQ</b>, "PooPoo wars"</font></td>
- </tr>
- </table>
- <p></p>
- <p><b>Tomcat</b>: Sylvain Laurent posts a first page on the tomcat integration
in jboss. It is integrated in one VM. Deep optimizations are underway (sharing of
classloaders) to make the complete J2EE stack one of the fastest in the market.
Project Game Over advances... J2EE based products are almost all in open source now.
- <p><b>Mirrors</b>: jboss still victim of its success! With still close to a
1000 thousand downloads a day it seems we max our current line (the one we enhanced a
couple of month ago). This explosive growth of jboss demands real mirrors. Many of
you have answered and we will set them up with the soon to come new binary of jboss.
Thanks for your help!
- <p><b>SpyderMQ</b>: Norbert Lataille just commited the first version of the
persistence and officially reaches 0.7. SpyderMQ is of commercial quality grade or
better thanks to your feedback and will soon be a 1.0 product. Kudos to Norbert for a
serious and in-depth work on this all important part of the jboss J2EE infrastructure.
- <p><b>"PooPoo Wars"</b>: Want to see starfighter starfighting? come and see
what open source is all about. The passion, the technology, the arguments, the
technology, the insults, but at the end of the day among bloodied warriors? superior
technology ;-). The "Poopoo wars" rage on jboss-dev!!! first row tickets right here!
Step right in step right in! Man we got to get Don King to sponsor us...
- <p>
-
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June
26 - July 2 2000: Security, Transactions, Marius, MetaData </font></td>
- </tr>
- </table>
- <p></p>
- <p><b>Security</b>: On Monday, Dan OConnor posts a first draft of a security
proposal for jboss. Integration of JAAS, management of users are integrated in this
proposal.
- <p><b>Transactions</b>: Aaron Mulder takes a crack at rewriting the transaction
manager. A new implementations that treats JTS for what it is worth is needed. We
are trying to let go of legacy, reuse the good ideas and see what comes out of it.
The first transactions work on Sunday.
- <p><b>Marius</b>: Andy Dwelly, the lead developer behind the critically
acclaimed "Marius" writes to us to submit a first cut of the documentation framework
with Marius. Looks promising and we will try to bring some developer documentation
under that framework.
- <p><b>MetaData</b>: EJX needs to separate MVC and we are undertaking the
creation of the metadata package in jboss. Heavy discussions on the mailing lists.
Juha Lindfors and Aaron Mulder take a first pass at it.
-<p>
-
-
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June
19 - June 25 2000: Zoap, TestSuite, Project Game Over, Getting Started</font></td>
- </tr>
- </table>
- <p></p>
- <p><b>ZOAP</b>: Dr Christoph Jung, submits a new access layer for jboss2.0.
It is based on SOAP and not on RMI. The invocation layer of the container was
cleanly abstracted and we will launching an official project of jboss for this
invocation plugin. It seems there is tremendous interest in the industry for a
SOAP enable J2EE server.</p>
- <p><b>JCTS</b>: Peter Braswell submits a first draft of JCTS. A complete
test suite for jboss is in the works. It is separate from Zola, which will focus more
on the application programming model and giving examples.</p>
- <p><b>Project Game Over</b>: Project Game Over is officially launched! <a
href="game_over.htm">what is Project Game Over ?</a> </p>
- <p><b>Documentation</b>: Kevin Boone submits a very needed "<a
href="getting_startedJB2.htm">Getting Started</a>" with jboss2.0. It is
very complete with deployment packaging, and programmers instructions. </p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June
12 - June 18 2000: JMX Expert group, Cocobase, BMP, <b>BUZZ</b></font></td>
- </tr>
- </table>
- <p></p>
- <p>Following the after glow of Java One...</p>
- <p><b>jboss/Telkel</b> is part of the <b>JMX in J2EE expert group at
SUN</b> Microsystems. All of our configuration and dynamic binding of the server
is done with JMX. Since Telkel is focusing its expertise on the large systems
management we are really proud to be invited to share what we know about
J2EE online management. Come and share the knowledge with us through the jboss
community. Now we don't just implement the spec with jboss, we also write it ;).</p>
- <p><b>Cocobase, </b>the O/R mapper will be integrated as a plugin in jboss
2.0. Cocobase already integrates with other containers with open source code and we
have agreed to adapt the code to jboss. The cocobase-jboss plugin project will be
launched soon.</p>
- <p><b>BMP support: </b>assembling the pieces of the puzzle is being done
in muti-task! BMP wiring is plugged in by Stephan Gruschke in one weekend. Quite
an impressive feat..</p>
- <p><b>Help pours in: jboss 2.0 modular design is a success!</b> Since we now
follow the modular design and interceptors it is fairly easy for folks to get in the
code base and make a difference. We see mucho help pouring in and documentation
being put in place. The bee-hive is alive!</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">June
5 - June 11 2000: <b>JAVA-ONE</b>!</font></td>
- </tr>
- </table>
- <p></p>
- <p>What a blast!</p>
- <p>The woodstock of computer science lived up to its reputation... the bands
(conferences) sucked but the real show was as usual in the people and the crowd.</p>
- <p>Le who's who of J2EE came by our booth and many contacts were taken.
From Vlada Matena to Linda DeMichiel, to WebLogic's VP of engineering we saw
everyone. But most importantly we thank the many of you that came by and expressed
support, enthusiasm, offered help, and helped spread the buzz and those that just came
to introduce themselves. We had a blast. The conference with RMH went fine,
except that we had forgotten our slides and did the open source thing of "welcome
to the future" (now imagine it). Most notably an analyst came by and said
"you are the fastest growing application server today" and that "All
the analysts are watching you".. hee hee we feel like rock stars and well we like
it!. More than anything we finally became aware of the amazing buzz that surrounded
jboss at JavaOne. The presentation on Open Source J2EE on Linux obviously added
to that growing buzz. Buzz is a funny thing, it comes and goe!
s, right now we are IT! so let's not drop that ball and let's capitalize on our
momentum!</p>
- <p>We have had tremendous feedback on the jboss2.0 architecture and the modular
approach to distributed software development in open source. The press talks about us
saying that we are the next "test case of open source". Project Game Over
also lights some eyes... people join in and grin...</p>
- <p>It could be that there will be less vendors at java one next year, that
would be nice, it would cost a little less, we could have a slightly bigger booth and
we wouldn't be smothered by the Gemstone ladies (althought that part was nice) with
long legs, wonderful b**bs, what the application server? where? gad, I really love
what you do, could you tell me more about your wonderful cache? that's right baby
cache is king, cache is king...</p>
- <p><a href="javaone_site/javaone.htm">PICTURES RIGHT HERE!!!!</a></p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May
29 - June 4 2000: New contributions, jboss2.0, <b>Minerva</b></font></td>
- </tr>
- </table>
- <p></p>
- <p>This week we understand that jboss2.0 is going to be able to scale the
development of the organization. The modular design and the clean isolation of
contributions enables people to work on isolated parts of the code (if they are
lucky)</p>
- <p><b>Wednesday</b>: jboss 2.0 stateful bean implementation gets a face
lift and the needed work is done. Numerous bug fixes as the code base stabilizes
fast.</p>
- <p><b>Friday</b>: Aaron Mulder submits <b>Minerva </b>a high level pool
management plugin for jboss. Minerva is now shipped as default with jboss and the new
pool management will interest those of you that need pools for those pricey Oracle
connections.</p>
- <p><b>Saturday: </b>3 new contributors added to jboss 2.0. The modular
design enables multiple contributions in parallel. We add Justin Forder (Jaws),
Dan christopherson (zola) and Aaron Mulder to the list of contributors... bravo and
thanks to them, keep it coming.</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May
22 - May 28 2000: jBoss advances on all CVS fronts. </font></td>
- </tr>
- </table>
- <p></p>
- <p>A lot of CVS commits this week as all projects of jBoss advance. Help is
pouring and the state of all the projects progresses fast.</p>
- <p><b>Tuesday</b>: <b>jBoss 2.0</b>. A lot of bug reports and frantic fixes
pace the last days. jBoss 2.0 reaches spec compliance and stability fast as all
development and testing effort focuses on this version released only weeks ago. We
recieve praise on the state of the container and it feels good, we will be ready by
JavaONE, oh yes! we will.</p>
- <p><b>Wednesday</b>: <b>Jaws</b>. Mucho functionality is required on Jaws and
it seems that O/R mapping is everyone's favorite topic of discussion. Everyone has a
favorite database that needs a particular Mapping. XML mapping permits us to define
pretty much any database, mapping it all takes some time. Jaws is moving fast.</p>
- <p><b>Thursday</b> <b>spyderMQ</b>. The little spyder is growing big. Norbert
Lataille commits an advanced implementation of the queues and moves to 0.3. The topic
selection is also coded so that complex queries on the topics can be specified.
spyderMQ is looking more and more like an advanced JMS implementation. 0.5 coming fast
and furious.</p>
- <p><b>Friday</b>: <b>Webstore</b> i18n support for webstore, you can now try
the ZOL implementation in many languages. JSP/Servlet and EJB in mucho ways.</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May
15 - May 21 2000: J1, GPL revision, Website maxed, <b>10000 downloads </b></font></td>
- </tr>
- </table>
- <p></p>
- <p>Another Big Week for jBoss with close to 600 mails on the combined mailing
lists. Folks are getting used to the mail split and discussion happen on Jaws,
spyderMQ, jBoss-dev, jBoss-user and Zola</p>
- <p><b>Monday</b>: We will be at JavaONE. Thanks to RMH (a graduate of the
group) for inviting us to the BOF on J2EE open source. We will also be on the Telkel
stand at J1, pays us a visit, come to the BOF.</p>
- <p><b>Tuesday</b>: Some folks need the information on the GPL to be
clearly layed out. We specify in a NOTE just like it is done in Linux that we consider
beans and applications to be "normal usage" of our container.</p>
- <p><b>Wednesday</b>: Website down! with too many downloads the bandwidth
is maxed on the old website. There was a service interruption this morning and we
apologize to all the visitors that were greated with "404". The site is back
up with a new bigger provider.</p>
- <p><b>Friday</b>: <b>10000 downloads in 10 days! jBoss2.0 is a smashing
success! </b>With about 1000 downloads per day jBoss must be the fastest growing
application server! No wonder the website went down...</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May 8
- May 14 2000: Le Board, new Website, <b>Bugzilla</b>, Mail split,
<b>JAWS</b></font></td>
- </tr>
- </table>
- <p></p>
- <p>Another Big Week for jBoss with close to 500 mails on the combined mailing
lists. The flow is big, and we are splitting the mailings list.</p>
- <p>Monday: We announce the composition of the board of jBoss. Early
members are Marc Fleury, USA, Rickard Oberg, Sweden, Juha Lindfors, Finland, Oleg
Nitz, Ukraine and Dan O'Connor USA. This board does the usual, vote on patches,
vote on 3rd party integration, vote...</p>
- <p>Tuesday: NEW WEBSITE!!! you are checking it out.</p>
- <p>Thursday: Bugzilla. Management of the bugs, reports and features is
growing out of hand. We have installed the Open Source standard, Bugzilla.</p>
- <p>Saturday: JAWS mailing list is up. Our favorite little austrilian
shark is up at [EMAIL PROTECTED] JAWS is a powerful little O/R tool, join it's
mailing list and feed the fish!</p>
- <p>Sunday: Mailing list split. Due to the very high volume on jBoss
we have decided to split the mailing lists. ejboss now moves to jboss-user and
jboss-dev. Same great place working-dogs.com, thanks to jon*.</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">May
1st - May 7 2000: PR2, Linux JDK1.3, JavaONE</font></td>
- </tr>
- </table>
- <p></p>
- <p>Tuesday: jBoss1.0 PR2 is released. jBoss1.0 moves in bug-fixing mode and
development moves to jBoss2.0. Some bug fixes in this version, some enhancements 1.0
final here we come</p>
- <p>Wednesday: Major news... IBM<b> </b>releases the much expected<b>
JDK1.3 on Linux. </b>jBoss decided to standardize on 1.3 long time ago, cool
technology is what this is all about and now our Linux penguin friends can play with
us. Thank you!</p>
- <p>Thrusday: Gary Meyer from Vitria will be talking about jBoss at JavaONE
during his "<b>Enterprise Java on Linux HOWTO</b>" presentation and has
given us a heads up!. Dude! thanks, we will get you going.</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April
24 - April 30 2000: Test integration, <b>spyderMQ</b>, jBoss 2.0 on Linux</font></td>
- </tr>
- </table>
- <p></p>
- <p>Monday: Zol and jBoss*.0 integrate their test suites. Zola becomes the
default test suite for jBoss.</p>
- <p>Tuesday: <b>spyderMQ is released</b>. jBoss believes that JMS will
likely lie at the heart of a scalable implementation. We get the message! Norbert
Lataille the lead developer announces the availability of the 0.1 source code and the
mailing list on egroups.</p>
- <p>Friday: jBoss 2.0 on Linux. Back by popular demand! Rickard Oberg
delivers a <b>jBoss 2.0 on Linux</b> (1.2.2) version of jBoss2.0. Now folks on Linux
can work on the latest and greatest electronica from the jBoss gang.</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April
17 - April 23 2000: <b>Board formation, jBoss 2.0</b></font></td>
- </tr>
- </table>
- <p></p>
- <p>Two major events this week, a busy one with north of 300 mails on the
list.</p>
- <p>Wednesday: Two major events this week. First the announcement of the
new<b> Board formation</b> for the jBoss organization. jBoss 2.0 with its modular
approach makes way for massive parallel development and collaboration. jBoss will now
be headed by a board of 5 to manage CVS, the people, the outside communication and
vote on major issues. We feel it is the right thing to do at this exciting stage and
given the breath taking rate of growth of jBoss. Expanded management should enable us
to scale this modular container. Marc Fleury will appoint the first members.</p>
- <p>Saturday: Rickard Oberg posts the <b>first version of jBoss 2.0 in
CVS</b>... go get it, it is revolutionary, all JMX, all componentized, same forward
thinking engineering... come code the future with us and <b>this</b> is the future
(applause in the room).</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April
10 - April 16 2000: Hypersonic, EJB References and Debugging</font></td>
- </tr>
- </table>
- <p></p>
- <p>Tuesday: a lively mail thread is started on the mailing list. It
discusses the default database that is shipped with jBoss. We talk about many of them,
most notably HypersonicSQL and instantDB. Both look good and can be redistributed, a
test version with HypersonicSQL is bundled by Marc Fleury and immediately
available.</p>
- <p>Thursday: a nagging bug, first identified by juha lindfors and
corrected by Dan O'Connor is integrated by Marc Fleury. We can now reference the
other EJB's from the java: namespace in JNDI, neat'o.</p>
- <p>Sunday: A must see feature... tired of seeing all of your messages in one
console, tired of not being able to call system.out from your beans. jBoss just
introduced a simple yet powerful feature for bean debugging: the capacity to
overwrite the out messages with the standard Tracer... neat messages. jBoss 2.0 takes
this even further.
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">April
3 - April 9 2000: jBoss 2.0, name change, Rickard Oberg, PR1</font></td>
- </tr>
- </table>
- <p></p>
- <p>Monday: Following the success of the conference and in keeping the pace
up, Rickard announced the "soon to be available" jBoss2.0. Just like its
predecessor, jBoss1.0, jBoss 2.0 will set ground breaking features for the rest of the
industry to watch. Just like we introduced dynamic Proxy based designs, we move
forward with JMX based administration and full componentization of the container.
jBoss 2.0 is a fully modular container it will enable all parties to simply integrate
their software and configure the container to suit their particular needs.</p>
- <p>Wednesday: EJBoss will change its name, we have chosen and reserved and
trademarked the name "jBoss". We drop the "e" as we hear
that e-commerce is out of fashion anyway ;-). Plus jBoss sort of sounds better than
EJBoss don't it? try it you will see that it rolls well on the tongue
"jay...Boss" :)</p>
- <p>Friday: Rickard Oberg will join the Telkel staff full time. Telkel is
starting to look like the "who's who" of jBoss;-). Rickard will be able to
dedicate himself fulltime to coding the server and it's kernel and that is cool ...</p>
- <p>Friday: jBoss in PR1. A public release of the 1.0 version.</p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">March
27 - April 2 2000: O'Reilly conference a roaring success</font></td>
- </tr>
- </table>
- <p></p>
- <p>This week Marc Fleury and Rickard Oberg presented at the O'Reilly conference
on Java. It was great to finally get to meet many of you and put names on faces. It is
good to hear your feedback and see that jBoss is used in the field. Many contacts were
taken, many talks initiated and most interesting was the talk with Graig McLanahan of
SUN/Tomcat. We will integrated Tomcat and jBoss. The talks with the SUN were also
very interesting, our project is clearly percieved as the leader in the field and it
was interesting to hear the plans that SUN has for the open source. They spoke
warmly of jBoss and our technology "we were told it's not that low end" was
the remark (pun) of one of the proeminent figures of EJB... hee hee who said it was
low-end? . </p>
- <p>
- <table border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td valign="top" bgcolor="#eeeeee"><font size="4" face="arial,helvetica">March
20 - March 26 2000: DR2 update, JAWS update</font></td>
- </tr>
- </table>
- <p></p>
- <p>Wednesday: A new version of DR2 is posted. It contais many bug fixes
from the early reports, mainly the class loader glitches.</p>
- <p>Thursday: Rickard Oberg posts another exciting enhancement for jBoss 2.0, it
will come with a mapping for full finders and a graphical tool to select the fields
you want to work on. With full R->O mapping jaws, still a "one nostril"
implementation will cover 80% of the OR needs out there. And if it
doesn't? well somebody has to make a living selling those pricey OR mappers
to you ;-)</p>
- <p>Sunday: Failed interposition bug solved by Dan O'Connor. </p>
- <center>
- <p><a
href="http://www.mail-archive.com/ejboss%40list.working-dogs.com/"><font
size="1">(hey, pst! working-dogs is where it's at)</font></a></p>
- <p><a href="news0400.htm"><font size="6"><b>OLDER NEWS</b></font></a></p>
- </center>
- <p>
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td bgcolor="white" valign="bottom" width="11"><img
src="picture/corner-sw-small.gif" width="11" height="11"></td>
- <td bgcolor="white" width="100%"></td>
- <td bgcolor="white" width="21"></td>
- <td width="4"></td>
- </tr>
- <tr>
- <td bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm"
width="1"></td>
- <td bgcolor="#99cc66" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr bgcolor="#99cc66">
- <td width="100%"> </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#666699" width="21"><img src="picture/corner-e.gif" width="22"
height="22"></td>
- <td width="4"></td>
- </tr>
- <tr height="89">
- <td bgcolor="white" valign="top" width="11" height="89"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
- <td align="right" height="89" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%" height="89">
- <tbody>
- <tr>
- <td valign="top" width="648"></td>
- <td valign="top" width="10"></td>
- <td align="right" valign="top" width="10"> </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td width="21" height="89"><img alt="o" height="1" src="binary.htm"
width="1"></td>
- <td width="4" height="89"></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="white" valign="top" width="170" height="1958">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td> </td>
- </tr>
- <tr>
- <td><img alt="o" height="1" src="binary.htm" width="1"><font
color="#424264" face="Myriad Web,Arial" size="1"> </font></td>
- </tr>
- </tbody>
- </table>
- <table border="0" cellpadding="0" cellspacing="0" width="100%" height="394">
- <tbody>
- <tr>
- <td bgcolor="#54547f">
- <div align="right">
- <img src="picture/corner-w.gif" width="10" height="22"></div>
- </td>
- <td bgcolor="#336600" width="100%" nowrap><font face="Myriad Web,Arial"
color="white" size="3"><b>Java One</b></font></td>
- <td bgcolor="#396c06"><img alt="o" height="1" src="picture/blank.gif"
width="1"></td>
- </tr>
- <tr height="372">
- <td height="372"></td>
- <td bgcolor="#ffcc00" width="100%" height="372">jBoss was present at
JavaONE 2000 as a guest in Telkel's booth . jBoss is clearly becoming the standard
j2ee open source effort. Thanks for all of those that stopped by and the good buzz.
- <p>Keep the buzz going round and round. You can see the pictures <a
href="javaone_site/javaone.htm">here</a>.</p>
- <p>jBoss now has a new logo,</p>
- <p><b>You love jBoss or you are powered by jBoss</b>? Feel free to use
this logo on your site</p>
- <p><img height="60" width="159"
src="picture/powered_by_jboss_flat_metal.gif"></p>
- <p><a href="logos.htm">More logos....</a></td>
- <td bgcolor="#99cc66" height="372"></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#bfbffe" height="1958"></td>
- </tr>
- </table>
- </body>
-
-</html>
+ </html>
1.2 +158 -158 jbossweb/menu.htm
Index: menu.htm
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/menu.htm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- menu.htm 2000/08/29 23:10:53 1.1
+++ menu.htm 2000/09/01 23:53:44 1.2
@@ -1,158 +1,158 @@
-<html>
-
- <head>
- <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
- <meta name="generator" content="Adobe GoLive 4">
- <title>Untitled Document</title>
- </head>
-
- <body bgcolor="#99cc66" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" text="black" link="black" vlink="black" alink="black">
- <table width="99" border="0">
- <tr>
- <td><img src="picture/button-jboss%20.gif" width="85"
height="24"></td>
- </tr>
- <tr height="162">
- <td height="162">
- <table>
- <tbody>
- <tr>
- <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83"><a
href="organization.htm" target="mainFrame"><font color="black" face="Myriad Web,Arial"
size="1">Organization</font></a></td>
- </tr>
- <tr height="17">
- <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83"
height="17"><a href="news.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial" color="black">News</font></a></td>
- </tr>
- <tr>
- <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83"><a
href="developers.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">Developers</font></a></td>
- </tr>
- <tr height="15">
- <td align="left"
width="12" height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83"
height="15"><a href="users.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial" color="black">Users</font></a></td>
- </tr>
- </tbody>
- <tr height="15">
- <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83" height="15"><a
href="team.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">The team</font></a></td>
- </tr>
- <tr height="15">
- <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83" height="15"><a
href="sponsor.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">Sponsors</font></a></td>
- </tr>
- <tr height="15">
- <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83" height="15"><a
href="partners.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial">Partners</font></a></td>
- </tr>
- <tr height="15">
- <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83" height="15"><a
href="project_game_over.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial">Game Over</font></a></td>
- </tr>
- <tr height="15">
- <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="83" height="15"><a
href="what.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial">What they
say </font></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><img src="picture/button-modules.gif" width="85"
height="24" border="0"></td>
- </tr>
- <tr>
- <td>
- <table>
- <tbody>
- <tr>
- <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"><a
href="jboss.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">jBoss</font></a></td>
- </tr>
- <tr>
- <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"><a
href="spydermq.htm" target="mainFrame"><font color="black" face="Myriad Web,Arial"
size="1">SpyderMQ</font></a></td>
- </tr>
- <tr height="17">
- <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"
height="17"><a href="jaws/jaws.html" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Jaws</font></a></td>
- </tr>
- <tr height="17">
- <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"
height="17"><a href="minerva/minerva.htm" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Minerva</font></a></td>
- </tr>
- <tr height="17">
- <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"
height="17"><a href="jcts/jcts.htm" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">TestSuite</font></a></td>
- </tr>
- <tr height="17">
- <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"
height="17"><a href="tomcat.htm" target="mainFrame"><font color="black" face="Myriad
Web,Arial" size="1">Tomcat</font></a></td>
- </tr>
- <tr height="17">
- <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"
height="17"><a href="zoap/zoap.htm" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Zoap</font></a></td>
- </tr>
- <tr height="17">
- <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86"
height="17"><a href="zola.htm" target="mainFrame"><font color="black" face="Myriad
Web,Arial" size="1">Zola</font></a></td>
- </tr>
- </tbody>
- <tr height="17">
- <td width="12"
height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86" height="17"><a
href="http://www.telkel.com/bugzilla/" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Bugzilla</font></a></td>
- </tr>
- <tr height="17">
- <td width="12"
height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="86" height="17"><a
href="mailing.htm" target="mainFrame"><font color="black" face="Myriad Web,Arial"
size="1">Mailing lists</font></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><img src="picture/button-download.gif" width="85"
height="24"></td>
- </tr>
- <tr>
- <td>
- <table>
- <tbody>
- <tr>
- <td align="left"
width="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td><a href="cvs.htm"
target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">CVS</font></a></td>
- </tr>
- <tr>
- <td align="left"
width="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td><a
href="binary.htm" target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">Binary</font></a></td>
- </tr>
- <tr>
- <td align="left"
width="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td><a
href="license.htm" target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">GPL License</font></a></td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- <tr>
- <td><img src="picture/button-how%20to.gif" width="85"
height="24"></td>
- </tr>
- <tr>
- <td>
- <table>
- <tbody>
- <tr>
- <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="46"><a
href="about.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">About...</font></a></td>
- </tr>
- </tbody>
- <tr>
- <td width="12"><img
src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="46"><a
href="getting_startedJB2.htm" target="mainFrame"><font face="Myriad Web,Arial"
size="1" color="black">Getting Started</font></a></td>
- </tr>
- <tr>
- <td width="12"><img
src="picture/bullet-small.gif" width="12" height="12"></td>
- <td width="46"><a
href="faq.htm" target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">FAQ</font></a></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </body>
-
-</html>
+<html>
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Untitled Document</title>
+ </head>
+
+ <body bgcolor="#99cc66" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" text="black" link="black" vlink="black" alink="black">
+ <table width="99" border="0">
+ <tr>
+ <td><img src="picture/button-jboss%20.gif" width="85"
height="24"></td>
+ </tr>
+ <tr height="162">
+ <td height="162">
+ <table>
+ <tbody>
+ <tr>
+ <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83"><a
href="organization.htm" target="mainFrame"><font color="black" face="Myriad Web,Arial"
size="1">Organization</font></a></td>
+ </tr>
+ <tr height="17">
+ <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83"
height="17"><a href="news.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial" color="black">News</font></a></td>
+ </tr>
+ <tr>
+ <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83"><a
href="developers.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">Developers</font></a></td>
+ </tr>
+ <tr height="15">
+ <td align="left"
width="12" height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83"
height="15"><a href="users.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial" color="black">Users</font></a></td>
+ </tr>
+ </tbody>
+ <tr height="15">
+ <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83" height="15"><a
href="team.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">The team</font></a></td>
+ </tr>
+ <tr height="15">
+ <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83" height="15"><a
href="sponsor.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">Sponsors</font></a></td>
+ </tr>
+ <tr height="15">
+ <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83" height="15"><a
href="partners.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial">Partners</font></a></td>
+ </tr>
+ <tr height="15">
+ <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83" height="15"><a
href="project_game_over.htm" target="mainFrame"><font size="1" face="Myriad
Web,Arial">Game Over</font></a></td>
+ </tr>
+ <tr height="15">
+ <td width="12"
height="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="83" height="15"><a
href="what.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial">What they
say </font></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><img src="picture/button-modules.gif" width="85"
height="24" border="0"></td>
+ </tr>
+ <tr>
+ <td>
+ <table>
+ <tbody>
+ <tr>
+ <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"><a
href="jboss.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">jBoss</font></a></td>
+ </tr>
+ <tr>
+ <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"><a
href="spydermq.htm" target="mainFrame"><font color="black" face="Myriad Web,Arial"
size="1">SpyderMQ</font></a></td>
+ </tr>
+ <tr height="17">
+ <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"
height="17"><a href="jaws/jaws.html" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Jaws</font></a></td>
+ </tr>
+ <tr height="17">
+ <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"
height="17"><a href="minerva/minerva.htm" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Minerva</font></a></td>
+ </tr>
+ <tr height="17">
+ <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"
height="17"><a href="jcts/jcts.htm" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">TestSuite</font></a></td>
+ </tr>
+ <tr height="17">
+ <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"
height="17"><a href="tomcat.htm" target="mainFrame"><font color="black" face="Myriad
Web,Arial" size="1">Tomcat</font></a></td>
+ </tr>
+ <tr height="17">
+ <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"
height="17"><a href="zoap/zoap.htm" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Zoap</font></a></td>
+ </tr>
+ <tr height="17">
+ <td align="left"
width="12" height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86"
height="17"><a href="zola.htm" target="mainFrame"><font color="black" face="Myriad
Web,Arial" size="1">Zola</font></a></td>
+ </tr>
+ </tbody>
+ <tr height="17">
+ <td width="12"
height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86" height="17"><a
href="http://www.telkel.com/bugzilla/" target="mainFrame"><font color="black"
face="Myriad Web,Arial" size="1">Bugzilla</font></a></td>
+ </tr>
+ <tr height="17">
+ <td width="12"
height="17"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="86" height="17"><a
href="mailing.htm" target="mainFrame"><font color="black" face="Myriad Web,Arial"
size="1">Mailing lists</font></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><img src="picture/button-download.gif" width="85"
height="24"></td>
+ </tr>
+ <tr>
+ <td>
+ <table>
+ <tbody>
+ <tr>
+ <td align="left"
width="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td><a href="cvs.htm"
target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">CVS</font></a></td>
+ </tr>
+ <tr>
+ <td align="left"
width="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td><a
href="binary.htm" target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">Binary</font></a></td>
+ </tr>
+ <tr>
+ <td align="left"
width="15"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td><a
href="license.htm" target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">GPL License</font></a></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><img src="picture/button-how%20to.gif" width="85"
height="24"></td>
+ </tr>
+ <tr>
+ <td>
+ <table>
+ <tbody>
+ <tr>
+ <td align="left"
width="12"><img src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="46"><a
href="about.htm" target="mainFrame"><font size="1" face="Myriad Web,Arial"
color="black">About...</font></a></td>
+ </tr>
+ </tbody>
+ <tr>
+ <td width="12"><img
src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="46"><a
href="getting_startedJB2.htm" target="mainFrame"><font face="Myriad Web,Arial"
size="1" color="black">Getting Started</font></a></td>
+ </tr>
+ <tr>
+ <td width="12"><img
src="picture/bullet-small.gif" width="12" height="12"></td>
+ <td width="46"><a
href="faq.htm" target="mainFrame"><font face="Myriad Web,Arial" size="1"
color="black">FAQ</font></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </body>
+
+</html>
1.2 +68 -91 jbossweb/jboss_win32_6.html
Index: jboss_win32_6.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_win32_6.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_win32_6.html 2000/08/29 23:12:35 1.1
+++ jboss_win32_6.html 2000/09/01 23:53:45 1.2
@@ -1,97 +1,74 @@
<html>
-<head>
-<title>
-Step 6: compiling and running the test client
-</title>
-</head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 6: compiling and running the test client</title>
+ </head>
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 6: compiling and
running the
-test client </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_5.html >
- BACK: Step 5: coding the test client </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html > contents </a></p>
- </td>
- <td> <a href=jboss_win32_7.html >
- FORWARD: Step 7: compiling the test client as a servlet </a> </td>
- </tr>
-</table>
-<p> We're now ready to run the test client, but first a word of explanation. <br>
-
- In reality the client and the server are
- likely to be on different computers. When you <i>compile</i> the client, the
- compiler needs to know about the organization and methods of classes in the
- Bean so it can do type checking. When you <i>run</i> the client, the run-time
- engine needs to know about the Bean classes, because type-casting is done at
- run-time. So when the client attempts to cast the remote reference to a reference
- to an object of class <code>InterestHome</code> for example, it needs to know
- about this class. This means that <i>you will need the Bean class files on both
- the client and the server</i> even though they execute on the server. This is
- fairly obvious if you think about the logic, but it causes all sorts of problems
- for people who are new to RMI programming. If the client can't find the Bean
- classes, you will get error messages like this:
-<pre>
-javax.naming.CommunicationException [Root exception is
-java.lang.ClassNotFoundException: com.web_tomorrow.interest.InterestHome]
-</pre>
- A `communication exception' is the exception
that represents any error that can't
-readily be ascribed to a definite cause. If you get this message you need to pay
-attention to the CLASSPATH on the client. <br>
- If the client program is at the top of the
-directory hierarchy, with the Bean classes below it, then we can run it like this:
-<pre>
-cd "\Program Files\jboss2\examples\interest"
-java -classpath %CLASSPATH%;..\..\lib\ext\ejb.jar;..\..\client\jboss-client.jar;.
InterestClient
-</pre>
- Once again, this needs to go in a .bat file or
a Makefile; you won't want to
-type it more than once. Note the long CLASSPATH; it needs to include
-the jBoss client classes and the EJB classes as well as the standard classpath
-(if any). <br>
- If all is well, the test client produces
-the following output:
-<TABLE BORDER=0 BGCOLOR="#FFFF80" CELLSPACING=4><TR><TD><pre>
-Got context
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 6: compiling and
running the test client </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_5.html">BACK: Step 5:
coding the test client </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td><a href="jboss_win32_7.html">FORWARD: Step 7: compiling
the test client as a servlet </a></td>
+ </tr>
+ </table>
+ <p>We're now ready to run the test client, but first a word of explanation.<br>
+ In reality the client and the server are
likely to be on different computers. When you <i>compile</i> the client, the compiler
needs to know about the organization and methods of classes in the Bean so it can do
type checking. When you <i>run</i> the client, the run-time engine needs to know about
the Bean classes, because type-casting is done at run-time. So when the client
attempts to cast the remote reference to a reference to an object of class
<code>InterestHome</code> for example, it needs to know about this class. This means
that <i>you will need the Bean class files on both the client and the server</i> even
though they execute on the server. This is fairly obvious if you think about the
logic, but it causes all sorts of problems for people who are new to RMI programming.
If the client can't find the Bean classes, you will get error messages like this:</p>
+ <pre>javax.naming.CommunicationException [Root exception is
+java.lang.ClassNotFoundException: com.web_tomorrow.interest.InterestHome]</pre>
+ <p> A `communication exception' is the
exception that represents any error that can't readily be ascribed to a definite
cause. If you get this message you need to pay attention to the CLASSPATH on the
client. Note that the server doesn't need a classpath setting since it works from the
deploy directory.<br>
+ If the client program is at the top of
the directory hierarchy, with the Bean classes below it, then we can run it like this:
+ <pre>cd "\Program Files\jboss2\examples\interest"
+java -classpath %CLASSPATH%;..\..\lib\ext\ejb.jar;..\..\client\jboss-client.jar;.
InterestClient </pre>
+ <p> Once again, this needs to go in a .bat
file or a Makefile; you won't want to type it more than once. Note the long CLASSPATH;
it needs to include the jBoss client classes and the EJB classes as well as the
standard classpath (if any).<br>
+ If all is well, the test client produces
the following output:
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>Got context
Got reference
Interest on 1000 units, at 10% per period, compounded over 2 periods is:
-210.00000000000023
-</pre></TD></TR></TABLE>
- If it doesn't produce this output but you see
a "MalformedURLException" try installing jboss in another directory that doesn't
contain space in it's path (typically some installations on windows don't like
C:\Program Files (the space).
-<br>
- Another common problem you can see here is a
"class not found exception" make sure you include all the jars.
-<br>
-<br>
- The Bean should produce an output on the
server as well; this is to show that
-the Bean has executed on the server, not the client. Look for something like this
-in the server log:
-<TABLE BORDER=0 BGCOLOR="#FFFF80" CELLSPACING=4><TR><TD><pre>
-[Interest] Someone called `calculateCompoundInterest!'
-</pre></TD></TR></TABLE>
-Well, that's it. We covered coding, compiling and deploying the Bean, and coding
-and running a simple test client. If you found this article useful, drop me a
-line at <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> ; if
there's
-enough response I may be persuaded to produce some more sophisticated tutorials.
-<p> Kevin Boone, June 2000 (original author)
-<p> Gregory Pierce, July 2000 (ported to Windows platforms)
-<p> Ken Jenks, July 2000 (editing)
-<p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_5.html >
- BACK: Step 5: coding the test client </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html > contents </a></p>
- </td>
- <td> <a href=jboss_win32_7.html >
- FORWARD: Step 7: compiling the test client as a servlet </a> </td>
- </tr>
-</table>
-
+210.00000000000023</pre>
+ </td>
+ </tr>
+ </table>
+ If it doesn't produce this output but you
see a "MalformedURLException" try installing jboss in another directory that
doesn't contain space in it's path (typically some installations on windows don't like
C:\Program Files (the space).<br>
+ Another common problem you can see here
is a "class not found exception" make sure you include all the jars.<br>
+ <br>
+ The Bean should produce an output on the
server as well; this is to show that the Bean has executed on the server, not the
client. Look for something like this in the server log:
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>[Interest] Someone called
`calculateCompoundInterest!'</pre>
+ </td>
+ </tr>
+ </table>
+ Well, that's it. We covered coding, compiling and deploying the Bean, and
coding and running a simple test client. If you found this article useful, drop me a
line at <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> ; if
there's enough response I may be persuaded to produce some more sophisticated
tutorials.
+ <p>Kevin Boone, June 2000 (original author)</p>
+ <p>Gregory Pierce, July 2000 (ported to Windows platforms)</p>
+ <p>Ken Jenks, July 2000 (editing)</p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_5.html">BACK: Step 5:
coding the test client </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td><a href="jboss_win32_7.html">FORWARD: Step 7: compiling
the test client as a servlet </a></td>
+ </tr>
+ </table>
</html>
1.2 +111 -114 jbossweb/jboss_win32_5.html
Index: jboss_win32_5.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_win32_5.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_win32_5.html 2000/08/29 23:12:35 1.1
+++ jboss_win32_5.html 2000/09/01 23:53:45 1.2
@@ -1,48 +1,41 @@
<html>
-<head>
-<title>
-Step 5: coding the test client
-</title>
-
-
-</head>
-
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 5: coding the test
client </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_4.html >
- BACK: Step 4: packaging and deploying the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_6.html >
- FORWARD: Step 6: compiling and running the test client </a></p>
- </td>
- </tr>
-</table>
-<p> An EJB on its own is no use; we will need at least a simple client to use
- its services. A user of EJBs may be another EJB, and ordinary JavaBean, a JSP
- page, an applet, or a stand-alone application. In this example, for simplicity,
- we will code a simple application. This application will create an object of
- class Interest, and execute its one method. <br>
-
- I should point out straight away that the
- test client I will present below does not illustrate how you should code this
- sort of thing in practice; I've done it this way to show exactly what's going
- on. In reality, you will probably want to separate out the RMI-specific stuff
- into a separate class to divide the important functionality from the technical
- details. This class is sometimes called a `stub'. Some EJB products will generate
- stubs automatically. jBoss doesn't do this, so you'll have to code the stubs
- yourself (it isn't difficult). <br>
- Here is the test client:
-<p> <b>Test client: InterestClient.java</b> <br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-import javax.naming.*;
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 5: coding the test client</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 5: coding the test
client </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_4.html">BACK: Step 4:
packaging and deploying the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_6.html">FORWARD: Step 6:
compiling and running the test client </a></center>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>An EJB on its own is no use; we will need at least a simple client to use
its services. A user of EJBs may be another EJB, and ordinary JavaBean, a JSP page, an
applet, or a stand-alone application. In this example, for simplicity, we will code a
simple application. This application will create an object of class Interest, and
execute its one method.<br>
+ </p>
+ <p>Upon "deployment" of the bean as we have seen in the previous
step, the server has generated all the stubs and skeletons needed for the distributed
calls. What we are going to cover here is the way you lookup a reference in
JNDI from a client and invoke it. It is pretty straightforward.</p>
+ <p> Here is the test client:</p>
+ <p><b>Test client: InterestClient.java</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>import javax.naming.*;
import com.web_tomorrow.interest.*;
import java.util.Hashtable;
import javax.rmi.PortableRemoteObject;
@@ -53,6 +46,10 @@
implemented in the package `com.web_tomorrow.interest'. For this to work, the
Bean must be deployed on an EJB server.
<p>
+</p>
+
+
+
<b>IMPORTANT</b> If you want to test this in a real client-server
configuration, this class goes on the client; the URL of the naming provider
specifed in the class must be changed from `localhost:1099' to the URL of the
@@ -68,10 +65,10 @@
public static void main(String[] args) {
// Set up the naming provider; this may not always be necessary, depending
// on how your Java system is configured.
- System.setProperty("java.naming.factory.initial",
- "org.jnp.interfaces.NamingContextFactory");
- System.setProperty("java.naming.provider.url",
- "localhost:1099");
+ System.setProperty("java.naming.factory.initial",
+ "org.jnp.interfaces.NamingContextFactory");
+ System.setProperty("java.naming.provider.url",
+ "localhost:1099");
// Enclosing the whole process in a single `try' block is not an ideal way
// to do exception handling, but I don't want to clutter the program up
@@ -79,12 +76,17 @@
try {
// Get a naming context
InitialContext jndiContext = new InitialContext();
- System.out.println("Got context");
+ System.out.println("Got context");
// Get a reference to the Interest Bean
- Object ref = jndiContext.lookup("interest/Interest");
- System.out.println("Got reference");
+ Object ref = jndiContext.lookup("interest/Interest");
+
+ // Note that if you did not use jboss.xml to overwrite JNDI naming
+ // the object will be available under "Interest" it's ejb-name
+ // Object ref = jndiContext.lookup("Interest");
+ System.out.println("Got reference");
+
// Get a reference from this to the Bean's Home interface
InterestHome home = (InterestHome)
PortableRemoteObject.narrow (ref, InterestHome.class);
@@ -94,72 +96,67 @@
// call the calculateCompoundInterest() method to do the calculation
System.out.println
- ("Interest on 1000 units, at 10% per period, compounded over 2 periods
is:");
+ ("Interest on 1000 units, at 10% per period, compounded over 2 periods
is:");
System.out.println (interest.calculateCompoundInterest (1000, 0.10, 2));
} catch(Exception e) {
System.out.println(e.toString());
}
}
-}
-</PRE></TD></TR></TABLE>
-<hr>
-<p> It's important to understand that in reality this client will be running on
- a different computer to the Bean server. For testing you will probably run them
- on the same computer, but it will still be using a network connection. So the
- first part of the program indicates how to find the server.
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
- System.setProperty("java.naming.factory.initial",
- "org.jnp.interfaces.NamingContextFactory");
- System.setProperty("java.naming.provider.url",
- "localhost:1099");
-</PRE></TD></TR></TABLE>
-There are several other ways to do this, which you may see described in other
-articles. In this case, the server is on the same machine as the client
(`localhost')
-and the default naming port is `1099' for jBoss (other servers may use different
-port numbers). If you run the client and the server on different machines, you
-will need to change these settings. <br>
- The comments in the program should describe
-how it works; one point that requires mention is that the recommended way to get
-a reference to the home interface on the server is like this:
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-InterestHome home = (InterestHome)
- PortableRemoteObject.narrow (ref, InterestHome.class);
-</PRE></TD></TR></TABLE>
-which ensures compatibility with different RMI servers (e.g., CORBA). `narrow'
-ensures that the object returned in `ref' really can be converted to an object
-of class `InterestHome'. <br>
- The test client doesn't need to be in the
-same package as the EJB classes, and in practice it probably won't be. So it needs
-to import the EJB classes using their fully-qualified class name, like this:
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-import com.web_tomorrow.interest.*;
-</PRE></TD></TR></TABLE>
-You will also need to pay attention to the CLASSPATH when compiling. Even though
-the EJB classes will <i>run</i> on the server, they need to be identified to the
-client so that the compiler can do the appropriate type checking. In the example
-program I have put the client at the top level of the directory hierachy, so if
-the CLASSPATH includes the current directory it will correctly find the EJB classes
-which are in the directories beneath it.
-<pre>
-cd "\Program Files\jboss2\examples\interest"
-javac -classpath ..\..\lib\ext\ejb.jar;. InterestClient.java
-</pre>
-This generates <CODE>InterestClient.class</CODE>.
-<p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_4.html >
- BACK: Step 4: packaging and deploying the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_6.html >
- FORWARD: Step 6: compiling and running the test client </a></p>
- </td>
- </tr>
-</table>
-
+}</pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ </p>
+ <p>It's important to understand that in reality this client will be running on
a different computer to the Bean server. For testing you will probably run them on the
same computer, but it will still be using a network connection. So the first part of
the program indicates how to find the server.
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>
System.setProperty("java.naming.factory.initial",
+ "org.jnp.interfaces.NamingContextFactory");
+ System.setProperty("java.naming.provider.url",
+ "localhost:1099");</pre>
+ </td>
+ </tr>
+ </table>
+ There are several other ways to do this, which you may see described in other
articles. In this case, the server is on the same machine as the client (`localhost')
and the default naming port is `1099' for jBoss (other servers may use different port
numbers). If you run the client and the server on different machines, you will need to
change these settings.<br>
+ The comments in the program should
describe how it works; one point that requires mention is that the recommended way to
get a reference to the home interface on the server is like this:
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>InterestHome home = (InterestHome)
+PortableRemoteObject.narrow (ref, InterestHome.class);</pre>
+ </td>
+ </tr>
+ </table>
+ which ensures compatibility with different RMI servers (e.g., CORBA). `narrow'
ensures that the object returned in `ref' really can be converted to an object of
class `InterestHome'.<br>
+ The test client doesn't need to be in the
same package as the EJB classes, and in practice it probably won't be. So it needs to
import the EJB classes using their fully-qualified class name, like this:
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>import com.web_tomorrow.interest.*;</pre>
+ </td>
+ </tr>
+ </table>
+ You will also need to pay attention to the CLASSPATH when compiling. Even
though the EJB classes will <i>run</i> on the server, they need to be identified to
the client so that the compiler can do the appropriate type checking. In the example
program I have put the client at the top level of the directory hierachy, so if the
CLASSPATH includes the current directory it will correctly find the EJB classes which
are in the directories beneath it.</p>
+ <pre>cd "\Program Files\jboss2\examples\interest"
+javac -classpath ..\..\lib\ext\ejb.jar;. InterestClient.java</pre>
+ <p>This generates <code>InterestClient.class</code>.</p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_4.html">BACK: Step 4:
packaging and deploying the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_6.html">FORWARD: Step 6:
compiling and running the test client </a></center>
+ </td>
+ </tr>
+ </table>
</html>
1.2 +60 -86 jbossweb/jboss_win32_4.html
Index: jboss_win32_4.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_win32_4.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_win32_4.html 2000/08/29 23:12:34 1.1
+++ jboss_win32_4.html 2000/09/01 23:53:45 1.2
@@ -1,101 +1,75 @@
<html>
-<head>
-<title>
-Step 4: packaging and deploying the Bean
-</title>
-</head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 4: packaging and deploying the Bean</title>
+ </head>
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 4: packaging and
deploying
-the Bean </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_3.html >
- BACK: Step 3: the deployment descriptor </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html > contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_5.html>
- FORWARD: Step 5: coding the test client </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> Creation of the Bean package involves building a JAR archive containing the
- classes and the XML files. For the example Bean we have been discussing, this
- is straightforward; at the top of the directory hierarchy run <code>jar</code>
- like this: (This should all be on one long command line.)<BR>
-<code>
-jar cvf interest.jar com\web_tomorrow\interest\Interest.class
com\web_tomorrow\interest\InterestHome.class
com\web_tomorrow\interest\InterestBean.class META-INF
-</code><BR>
- If you have `make' on your system, and you
have unpacked the source code archive,
-you can get the same effect simply by executing `make package'. I strongly recommend
-using Makefiles or batch files to do these operations because in practice you
-will be repeating them many times during development.<br>
- The <code>jar cvf</code> command builds an
archive
-containing the three classes, and the XML files in the META-INF directory. If you
list the
-contents of the archive you should see something like this:
-<pre>
- 0 06-16-00 11:34 META-INF/
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 4: packaging and
deploying the Bean </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_3.html">BACK: Step 3: the
deployment descriptor </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_5.html">FORWARD: Step 5:
coding the test client </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Creation of the Bean package involves building a JAR archive containing the
classes and the XML files. For the example Bean we have been discussing, this is
straightforward; at the top of the directory hierarchy run <code>jar</code> like this:
(This should all be on one long command line.)<br>
+ <code>jar cvf interest.jar com\web_tomorrow\interest\Interest.class
com\web_tomorrow\interest\InterestHome.class
com\web_tomorrow\interest\InterestBean.class META-INF </code><br>
+ If you have `make' on your system, and
you have unpacked the source code archive, you can get the same effect simply by
executing `make package'. I strongly recommend using Makefiles or batch files to do
these operations because in practice you will be repeating them many times during
development.<br>
+ The <code>jar cvf</code> command builds
an archive containing the three classes, and the XML files in the META-INF directory.
If you list the contents of the archive you should see something like this:</p>
+ <pre> 0 06-16-00 11:34 META-INF/
72 06-16-00 11:35 META-INF/MANIFEST.MF
248 06-16-00 10:12 com/web_tomorrow/interest/Interest.class
300 06-16-00 10:12 com/web_tomorrow/interest/InterestHome.class
877 06-16-00 10:12 com/web_tomorrow/interest/InterestBean.class
549 06-15-00 18:15 META-INF/ejb-jar.xml
- 3597 06-15-00 17:20 META-INF/jboss.xml
-</pre>
-Note that the directory structure must be <i>exactly</i> like this, or it won't
-work. <br>
- To deploy the Bean on the server, all that's
-necessary is to copy the .jar file to the `deploy' directory on the server,
e.g.,<pre>
-copy interest.jar "c:\Program Files\jboss2\deploy"
-</pre>
- You can do this as often as you like; the
server
-will detect that the file has changed and automatically re-deploy it. During
-deployment you should see the following
-messages from the server:<pre>
-[Auto deploy] Auto deploy of file: c:\Program Files\jboss2\deploy\interest.jar
+ 3597 06-15-00 17:20 META-INF/jboss.xml</pre>
+ <p>Note that the directory structure must be <i>exactly</i> like this, or it
won't work. Again a common mistake is to do a META_INF (underscore) instead of
META-INF, be careful with this one<br>
+ <br>
+ To deploy the Bean on the server, all
that's necessary is to copy the .jar file to the `deploy' directory on the server,
e.g.,</p>
+ <pre>copy interest.jar "c:\Program Files\jboss2\deploy"</pre>
+ <p> You can do this as often as you like;
the server will detect that the file has changed and automatically re-deploy it.
During deployment you should see the following messages from the server:
+ <pre>[Auto deploy] Auto deploy of file: c:\Program
Files\jboss2\deploy\interest.jar
[Container factory] Deploying:file: c:\Program Files\jboss2\deploy\interest.jar
[Container factory] Deploying Interest
[Container factory] Started: Interest
[Container factory] Bound Interest to interest/Interest
[Container factory] Deployed application:
-file: c:\Program Files\jboss2\deploy\interest.jar
-</pre>
-If you see a message like this:<pre>
-[Container factory] Deploying:file:c:\Program Files\jboss2\deploy\interest.jar
+file: c:\Program Files\jboss2\deploy\interest.jar</pre>
+ <p>If you see a message like this:
+ <pre>[Container factory] Deploying:file:c:\Program
Files\jboss2\deploy\interest.jar
[Container factory] Deployed application:
-file:c:\Program Files\jboss2\deploy\interest.jar
-</pre>
-then no Beans have been deployed -- the server always reports the Beans that it
-detects. This usually means that the deployment descriptor <code>ejb-jar.xml</code>
-is badly structured, or missing, or in the wrong directory. Note that you <i>can</i>
-deploy without a <code>jboss.xml</code> file; the server will use defaults for
-all its settings. In simple cases you may get away with this. <br>
- If everything has gone according to plan,
-you should now have a Bean deployed on the server. We will now create a simple
-test client that runs one of its methods, just to prove that it's working.
-<p> </p>
-<p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_3.html >
- BACK: Step 3: the deployment descriptor </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html > contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_5.html>
- FORWARD: Step 5: coding the test client </a></p>
- </td>
- </tr>
-</table>
-
+file:c:\Program Files\jboss2\deploy\interest.jar</pre>
+ <p>then no Beans have been deployed -- the server always reports the Beans
that it detects. This usually means that the deployment descriptor
<code>ejb-jar.xml</code> is badly structured, or missing, or in the wrong directory.
Note that the server doesn't need to have the CLASSPATH set with your classes it
is done automatically from the deploy directory.<br>
+ If everything has gone according to plan,
you should now have a Bean deployed on the server. We will now create a simple test
client that runs one of its methods, just to prove that it's working.</p>
+ <p> </p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_3.html">BACK: Step 3: the
deployment descriptor </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_5.html">FORWARD: Step 5:
coding the test client </a></center>
+ </td>
+ </tr>
+ </table>
</html>
1.2 +90 -174 jbossweb/jboss_win32_3.html
Index: jboss_win32_3.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_win32_3.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_win32_3.html 2000/08/29 23:12:34 1.1
+++ jboss_win32_3.html 2000/09/01 23:53:45 1.2
@@ -1,46 +1,38 @@
<html>
-<head>
-<title>
-Step 3: the deployment descriptor
-</title>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 3: the deployment descriptor</title>
+ </head>
-</head>
-
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 3: the deployment
descriptor
- </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font>
-</p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_2.html>
- BACK: Step 2: creating the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_4.html>
- FORWARD: Step 4: packaging and deploying the Bean </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> Now it's time to create
-the deployment descriptor. As a reminder, this file
- tells the EJB server which classes form the Bean, the home interface and the
- remote interface. If there is more than one Bean in the package, it indicates
- also how the Beans interact with one another. In this simple example, there
- is only one Bean so we won't need to worry about that part. <br>
- Most commercial EJB servers are supplied
- with graphical tools for constructing the deployment descriptor. jBoss does
- have an XML editor, but it's just as easy to construct the deployment descriptor
- manually. Here it is:
-<p> <b>ejb-jar.xml: deployment descriptor for the Interest Bean</b><br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-<?xml version="1.0" encoding="Cp1252"?>
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 3: the deployment
descriptor </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming
using jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_2.html">BACK: Step 2:
creating the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_4.html">FORWARD: Step 4:
packaging and deploying the Bean </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Now it's time to create the deployment descriptor. As a reminder, this file
tells the EJB server which classes form the Bean, the home interface and the remote
interface. If there is more than one Bean in the package, it indicates also how the
Beans interact with one another. In this simple example, there is only one Bean so we
won't need to worry about that part.<br>
+ Most commercial EJB servers are supplied
with graphical tools for constructing the deployment descriptor. jBoss does have an
XML editor, but it's just as easy to construct the deployment descriptor manually.
Here it is:</p>
+ <p><b>ejb-jar.xml: deployment descriptor for the Interest Bean</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre><?xml version="1.0"
encoding="Cp1252"?>
<ejb-jar>
<description>jBoss test application</description>
<display-name>Test</display-name>
@@ -54,145 +46,69 @@
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
- </ejb-jar>
-</PRE></TD></TR></TABLE>
-<hr>
-The deployment descriptor must be called <code>ejb-jar.xml</code> and it must
-be in the directory <code>.\META-INF</code>. A common mistake is to name this
-directory `META_INF' (with an underscore, rather than a dash), which won't work.
-<br>
- In principle what we deploy on the server
-is an application, not a Bean. In this example our application consists of exactly
-one Bean, so it comes to the same thing. In the deployment descriptor, the section
-<pre>
-<ejb-name>Interest</ejb-name>
-</pre>
-assigns a name to the Bean; in practice client applications won't use this name,
-they will use the Bean's JNDI name, which is assigned in a different file. The
-JNDI name will often be in the form `[application name]/[bean name]', which is
-what we shall use later. <br>
- Although the deployment
-descriptor format
-
-is common to all EJB servers, it doesn't provide all the information that the
-server needs to deploy the bean. Specifically it does not know how to map package
-names to JNDI names. The server may also need to be told how to manage persistence
-and state. There is, as yet, no standard way of specifying these things, and every
-server implementation does it differently. There isn't even a standard <i>name</i>
-for this procedure. The approach taken by jBoss is that the Bean package should
-provide an additional XML file, called <code>jboss.xml</code> in the same directory
-as the deployment descriptor. The format of <code>jboss.xml</code> is largely
-undocumented, but it's straightforward. The first part of the file lists the Beans
-and their JNDI names, and refers to configuration sections in the second part
-of the file. It should only be necessary to edit the first part. In the listings
-below I have divided the <code>jboss.xml</code> file into two parts to make the
-distinction clear; of course you need both these parts in the same file in
practice.
-<p> <b>jboss.xml: first part (this bit provided by the Bean developer)</b><br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-<jboss>
+ </ejb-jar></pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ The deployment descriptor must be called <code>ejb-jar.xml</code> and it must
be in the directory <code>.\META-INF</code>. A common mistake is to name this
directory `META_INF' (with an underscore, rather than a dash), which won't work.<br>
+ In principle what we deploy on the server
is an application, not a Bean. In this example our application consists of exactly one
Bean, so it comes to the same thing. In the deployment descriptor, the section</p>
+ <pre><ejb-name>Interest</ejb-name></pre>
+ <p>assigns a name to the Bean. jboss in its standard configuration will put
the bean's home interface under the ejb-name moniker if you don't specify anything
else. In other words, when your applications want to access the bean through it's
home jboss will put it in JNDI under the ejb-name. </p>
+ <p>In practice client applications are not forced to use this name. Typically
a developer will not bother with specifying a different name for the
JNDI namespace. However a production installation of a complete application
comprising many beans, will usually use a different name than the one specified by the
developer. Typically it could use `[application name]/[bean name]', which is what we
shall use later.<br>
+ </p>
+ <p> Although the deployment descriptor
format of the ejb-jar.xml file is common to all EJB servers, and precisely defined in
a DTD you can get from SUN, it doesn't specify some advanced stuff. Specifically it
does not know how to map ejb-name to a deployment JNDI such as the one we just
talked about. It also doesn't know how to map resources. The server may also need to
be told how to manage persistence and state. There is, as yet, no standard way of
specifying these things, and every server implementation does it differently. </p>
+ <p>The approach taken by jBoss is it provides a standard behaviour that works
mostly from the ejb-jar.xml file. There is no need for additional information in most
cases. In case of advanced configurations we define the jboss.xml file that gives all
the relevant information to the container, such as JNDI mapping names, persistence
information, database mapping and advanced container configuration (interceptors and
plugins), please refer to the chapter on jboss.xml for detailed information of what it
can do, we will cover simple things here. <br>
+ </p>
+ <p>The standard behaviour of jboss is capable of working from ejb-jar.xml in
95% of cases and needs jboss.xml only if you need to specify specific deployment
information. </p>
+ <p>An additional feature of the new metadata is that it works
"differentially". In clear what this means is that if you wish to override
the name of a bean you need to only specify that part of xml tags in the jboss.xml
file.</p>
+ <p></p>
+ <p><b>Using the ejb-name from ejb-jar.xml</b></p>
+ <p>for most development purposes, as soon as you provide a ejb-jar.xml with
the beans the container will get the ejb-name as the JNDI name as standard
behaviour. This makes your development life easier.</p>
+ <p>If you don't provide a jboss.xml file you will find your bean under the
name "Interest".</p>
+ <p><b>Overriding ejb-name with a real JNDI name in jboss.xml</b></p>
+ <p>If in deployment you would rather use the "myApp/myBean" naming
pattern you need to provide the following text in jboss.xml. </p>
+ <p><b>jboss.xml: (Optional, this bit provided by the Bean deployer)</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre><jboss>
<enterprise-beans>
<session>
<ejb-name>Interest</ejb-name>
<jndi-name>interest/Interest</jndi-name>
- <configuration-name>Default Stateless
SessionBean</configuration-name>
</session>
<secure>false</secure>
- </enterprise-beans>
-</PRE></TD></TR></TABLE>
-<hr>
-<p> All this file says is that the Bean called <code>Interest</code> is assigned
- the JNDI name of <code>interest/Interest</code> and has the server configuration
- <code>Default Stateless SessionBean</code>. This configuration refers to a
section
- in the second part of the file. I don't know in detail what this section does,
- and I don't particularly want to! Here it is, anyway:
-<p> <b>jboss.xml: second part (this bit should not need to be edited)</b><br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
- <resource-managers />
- <container-configurations>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.EntityContainerConfiguration">
- <container-name>BMP EntityBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.EntityInstancePool</instance-pool>
-
<instance-cache>org.jboss.ejb.plugins.NoPassivationEntityInstanceCache</instance-cache>
-
<persistence-manager>org.jboss.ejb.plugins.BMPPersistenceManager</persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- <container-cache-conf />
- <container-pool-conf>
- <MaximumSize>100</MaximumSize>
- <MinimumSize>10</MinimumSize>
- </container-pool-conf>
- </container-configuration>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.StatelessSessionContainerConfiguration">
- <container-name>Singleton Stateless SessionBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.SingletonStatelessSessionInstancePool</instance-pool>
- <instance-cache></instance-cache>
- <persistence-manager></persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- </container-configuration>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.EntityContainerConfiguration">
- <container-name>CMP EntityBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.EntityInstancePool</instance-pool>
-
<instance-cache>org.jboss.ejb.plugins.NoPassivationEntityInstanceCache</instance-cache>
-
<persistence-manager>org.jboss.ejb.plugins.jaws.JAWSPersistenceManager</persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- <container-cache-conf />
- <container-pool-conf>
- <MaximumSize>100</MaximumSize>
- <MinimumSize>10</MinimumSize>
- </container-pool-conf>
- </container-configuration>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.StatelessSessionContainerConfiguration">
- <container-name>Default Stateless SessionBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.StatelessSessionInstancePool</instance-pool>
- <instance-cache></instance-cache>
- <persistence-manager></persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- <container-pool-conf>
- <MaximumSize>100</MaximumSize>
- <MinimumSize>10</MinimumSize>
- </container-pool-conf>
- </container-configuration>
- </container-configurations>
- </jboss>
-</PRE></TD></TR></TABLE>
-<hr>
-<p> <br>
- So now we've got the deployment descriptor
- <code>ejb-jar.xml</code>, the run-time configuration file <code>jboss.xml</code>
- and the classes. It's time to package them together.
-<p> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_2.html>
- BACK: Step 2: creating the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_4.html>
- FORWARD: Step 4: packaging and deploying the Bean </a></p>
- </td>
- </tr>
-</table>
+ </enterprise-beans></pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ </p>
+ <p>All this file says is that the Bean called <code>Interest</code> is
assigned the JNDI name of <code>interest/Interest</code>.</p>
+ <p>The indentation is just there for formatting and readability, it is non
important.
+ <hr>
+ </p>
+ <p><br>
+ So now we've got the deployment
descriptor <code>ejb-jar.xml</code>. Again jboss will happily run just from that file
and bind the object under "Interest" as standard JNDI name. We also
have the optional jboss.xml to provide another name "interest/Interest" to
overwrite the standard behaviour with JNDI. We also have the classes. It's time to
package them together.</p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_2.html">BACK: Step 2:
creating the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_4.html">FORWARD: Step 4:
packaging and deploying the Bean </a></center>
+ </td>
+ </tr>
+ </table>
+ </body>
-</body>
</html>
1.2 +110 -159 jbossweb/jboss_win32_2.html
Index: jboss_win32_2.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_win32_2.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_win32_2.html 2000/08/29 23:12:33 1.1
+++ jboss_win32_2.html 2000/09/01 23:53:45 1.2
@@ -1,122 +1,76 @@
<html>
-<head>
-<title>
-Step 2: creating the Bean
-</title>
-</head>
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 2: creating the Bean
- </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font>
-</p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_1.html>
- BACK: Step 1: installing jBoss </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_3.html>
- FORWARD: Step 3: the deployment descriptor </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> In this step we will write and compile a simple Enterprise JavaBean. You can
- <a href="interestEJB.zip">download the source code</a>
<code>interestEJB.zip</code>
- for this example. (You can use <CODE>jar xf interestEJB.zip</CODE> to unzip the
.zip file.)
- The example
- -- which is called `Interest' -- is about as simple as an EJB can get: it is
- a `stateless session bean'. Its job is to calculate the amount of compound
interest
- payable on a sum of money borrowed over a specified term with a specified
interest
- rate. In fact, there is only one functional line of code in the whole package.
- <br>
- If you want to compile the classes yourself,
- you'll need to create a directory hierarchy that reflects the structure of the
- pacakage. The package in this example is <code>com.web_tomorrow.interest</code>
- so you'll need to create the directory structure:
-<pre>
-com
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 2: creating the Bean</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 2: creating the
Bean </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming
using jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_1.html">BACK: Step 1:
installing jBoss </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_3.html">FORWARD: Step 3:
the deployment descriptor </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>In this step we will write and compile a simple Enterprise JavaBean. You
can <a href="interestEJB.zip">download the source code</a>
<code>interestEJB.zip</code> for this example. (You can use <code>jar xf
interestEJB.zip</code> to unzip the .zip file.) The example -- which is called
`Interest' -- is about as simple as an EJB can get: it is a `stateless session bean'.
Its job is to calculate the amount of compound interest payable on a sum of money
borrowed over a specified term with a specified interest rate. In fact, there is only
one functional line of code in the whole package.<br>
+ If you want to compile the classes
yourself, you'll need to create a directory hierarchy that reflects the structure of
the pacakage. The package in this example is <code>com.web_tomorrow.interest</code> so
you'll need to create the directory structure:</p>
+ <pre>com
web_tomorrow
interest
- {java source and class files here}
-</pre>
- The commands in this tutorial are specific
-to the jBoss installation path, so the complete structure will look like this:
-<pre>
-Program Files
+ {java source and class files here}</pre>
+ <p> The commands in this tutorial are
specific to the jBoss installation path, so the complete structure will look like this:
+ <pre>Program Files
jboss2
examples
interest
com
web_tomorrow
interest
- {java source and class files here}
-</pre>
-
- Create an <CODE>examples</CODE> folder under
-<CODE>c:\Program Files\jboss2\</CODE>,
-then create an <CODE>interest</CODE> folder under <CODE>examples\</CODE>. Now
-change to <CODE>c:\Program Files\jboss2\examples\interest</CODE> and unzip the
-archive <code>interestEJB.tar.gz</code>. It will create this
-structure automatically.
-<p> <font face=helvetica,arial size=+2>EJBs: review</font>
-<p> As a reminder, and Enterprise JavaBean has a minimum of three classes.
-<ul>
- <li>The remote interface. This is the class that exposes the methods of the
- Bean to the outside world. In the example, the remote interface is the class
- <code>com.web_tomorrow.interest.Interest</code>
- <li>The Bean class. This implements the methods specified by the remote
interface.
- In this example, the Bean class is
<code>com.web_tomorrow.interest.InterestBean</code>
- <li>The home interface. This specifies how a new Bean is created, managed and
- deleted. As a minimum it should specify at least one <code>create()</code>
- method. There should be an <code>ejbCreate()</code> method in the Bean class
- for each <code>create()</code> method in the home interface. In this example,
- the home interface is <code>com.web_tomorrow.InterestHome</code>
-</ul>
- Of course, a Bean can include other classes,
or even other packages, but the classes
-listed above are the minimum. The classes must be packaged into a JAR archive
-with a directory structure that reflects the hierarchy of packages. In the example,
-the classes are in the package <code>com.web_tomorrow.interest</code>, so they
-need to be in the directory<pre>
-c:\Program Files\jboss2\examples\interest\com\web_tomorrow\interest\
-</pre>
-You
-will also need a directory called <code>META-INF</CODE> to store the deployment
-descriptor (always called <code>ejb-jar.xml</code>) and -- optionally -- another
-XML file to tell the server about name mappings. With jBoss, this file must be
-called <code>jboss.xml</code>. <br>
- So before writing the classes, we need a
-directory structure like this:
-<pre>
-com
+ {java source and class files here}</pre>
+ <p> Create an <code>examples</code> folder
under <code>c:\Program Files\jboss2\</code>, then create an <code>interest</code>
folder under <code>examples\</code>. Now change to <code>c:\Program
Files\jboss2\examples\interest</code> and unzip the archive
<code>interestEJB.tar.gz</code>. It will create this structure automatically.
+ <p><font face="helvetica,arial" size="5">EJBs: review</font></p>
+ <p>As a reminder, and Enterprise JavaBean has a minimum of three classes.</p>
+ <ul>
+ <li>The remote interface. This is the class that exposes the methods
of the Bean to the outside world. In the example, the remote interface is the class
<code>com.web_tomorrow.interest.Interest</code>
+ <li>The Bean class. This implements the methods specified by the
remote interface. In this example, the Bean class is
<code>com.web_tomorrow.interest.InterestBean</code>
+ <li>The home interface. This specifies how a new Bean is created,
managed and deleted. As a minimum it should specify at least one <code>create()</code>
method. There should be an <code>ejbCreate()</code> method in the Bean class for each
<code>create()</code> method in the home interface. In this example, the home
interface is <code>com.web_tomorrow.InterestHome</code>
+ </ul>
+ <p> Of course, a Bean can include other
classes, or even other packages, but the classes listed above are the minimum. The
classes must be packaged into a JAR archive with a directory structure that reflects
the hierarchy of packages. In the example, the classes are in the package
<code>com.web_tomorrow.interest</code>, so they need to be in the directory
+ <pre>c:\Program Files\jboss2\examples\interest\com\web_tomorrow\interest\</pre>
+ <p>You will also need a directory called <code>META-INF</code> to store the
deployment descriptor (always called <code>ejb-jar.xml</code>) and -- optionally --
another XML file to tell the server about name mappings. With jBoss, this file must be
called <code>jboss.xml</code>.<br>
+ So before writing the classes, we need a
directory structure like this:
+ <pre>com
web_tomorrow
interest
{java source and class files here}
META-INF
ejb-jar.xml
- jboss.xml
-
+ jboss.xml (optional)
</pre>
- If the <code>jar</code> utility is run at
the top level of this directory structure,
-it will put the files in the right ordering in the archive. We will discuss the
-creation of the XML files later. <br>
- (Of course, in your own work you will create
-a directory hierarchy that reflect the package hierarchy you need, rather than
-`com.web_tomorrow.XXXX' )
-<p> <font face=helvetica,arial size=+2>Coding the classes</font>
-<p> We need three classes: the remote interface, the Bean, and the home interface.
- All the .java files will go in the subdirectory
<code>.\com\web_tomorrow\interest</code>
- <br>
- The remote interface in this example is
- very simple.
-<p> <b>Interest.java: remote interface for the `interest' EJB</b> <br>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-package com.web_tomorrow.interest;
+ <p> If the <code>jar</code> utility is run
at the top level of this directory structure, it will put the files in the right
ordering in the archive. We will discuss the creation of the XML files later.<br>
+ (Of course, in your own work you will
create a directory hierarchy that reflect the package hierarchy you need, rather than
`com.web_tomorrow.XXXX' )
+ <p><font face="helvetica,arial" size="5">Coding the classes</font></p>
+ <p>We need three classes: the remote interface, the Bean, and the home
interface. All the .java files will go in the subdirectory
<code>.\com\web_tomorrow\interest</code><br>
+ The remote interface in this example is
very simple.</p>
+ <p><b>Interest.java: remote interface for the `interest' EJB</b><br>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>package com.web_tomorrow.interest;
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
@@ -137,16 +91,19 @@
*/
public double calculateCompoundInterest(double principle,
double rate, double periods) throws RemoteException;
-}
-</PRE></TD></TR></TABLE>
-<hr>
-The remote interface specifies only one `business method'
<code>calculateCompoundInterest</code>.
-<br>
- The home interface is even simpler.
-<p> <b>Interest.java: remote interface for the `interest' EJB</b> <br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-package com.web_tomorrow.interest;
+}</pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ The remote interface specifies only one `business method'
<code>calculateCompoundInterest</code>.<br>
+ The home interface is even simpler.</p>
+ <p><b>Interest.java: remote interface for the `interest' EJB</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>package com.web_tomorrow.interest;
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
@@ -164,15 +121,18 @@
Interest create()
throws RemoteException, CreateException;
}
-
-</PRE></TD></TR></TABLE>
-<hr>
-Finally, here is the Bean class. This is the only one that does any real work
-in this simple example.
-<p> <b>Interest.java: remote interface for the `interest' EJB</b> <br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-package com.web_tomorrow.interest;
+</pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ Finally, here is the Bean class. This is the only one that does any real work
in this simple example.</p>
+ <p><b>Interest.java: remote interface for the `interest' EJB</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>package com.web_tomorrow.interest;
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
@@ -194,7 +154,7 @@
*/
public double calculateCompoundInterest(double principle,
double rate, double periods) {
- System.out.println ("Someone called `calculateCompoundInterest!'");
+ System.out.println ("Someone called `calculateCompoundInterest!'");
return principle * Math.pow(1+rate, periods) - principle;
}
@@ -222,41 +182,32 @@
Empty method body
*/
public void setSessionContext(SessionContext sc) {}
-}
-</PRE></TD></TR></TABLE>
-<hr>
-Notice that most of the methods are empty; they have to exist because they're
-specified by the SessionBean interface, but they don't need to do anything in
-this case. <br>
- If you haven't already done so, you should
-create these .java files in the directory <code>.\com\web_tomorrow\interest</code>
-(or unpack the archive with them in). Then you can compile them using the
commands<pre>
-cd "\Program Files\jboss2\examples\interest"
-javac -classpath ..\..\lib\ext\ejb.jar com\web_tomorrow\interest\*.java
-</pre>
-(Naturally, you should the correct path if you haven't installed
-jBoss in <code>c:\Program Files\jboss2</code>.) This should create three class
files:
-<code>InterestBean.class</code>,
-<code>Interest.class</code>, and <code>InterestHome.class</code>. If you have
-`make' on your system, and you have unpacked the archive, you can build all the
-classes just be running <code>make</code> in the same directory as the Makefile.
-<br>
- With the classes compiled, it's time to create
-the deployment descriptor.
-<p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_win32_1.html>
- BACK: Step 1: installing jBoss </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_3.html>
- FORWARD: Step 3: the deployment descriptor </a></p>
- </td>
- </tr>
-</table>
+} </pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ Notice that most of the methods are empty; they have to exist because they're
specified by the SessionBean interface, but they don't need to do anything in this
case.<br>
+ If you haven't already done so, you
should create these .java files in the directory
<code>.\com\web_tomorrow\interest</code> (or unpack the archive with them in). Then
you can compile them using the commands</p>
+ <pre>cd "\Program Files\jboss2\examples\interest"
+javac -classpath ..\..\lib\ext\ejb.jar com\web_tomorrow\interest\*.java</pre>
+ <p>(Naturally, you should the correct path if you haven't installed jBoss in
<code>c:\Program Files\jboss2</code>.) This should create three class files:
<code>InterestBean.class</code>, <code>Interest.class</code>, and
<code>InterestHome.class</code>. If you have `make' on your system, and you have
unpacked the archive, you can build all the classes just be running <code>make</code>
in the same directory as the Makefile.<br>
+ With the classes compiled, it's time to
create the deployment descriptor.
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_win32_1.html">BACK: Step 1:
installing jBoss </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_3.html">FORWARD: Step 3:
the deployment descriptor </a></center>
+ </td>
+ </tr>
+ </table>
</html>
1.2 +83 -145 jbossweb/jboss_win32_1.html
Index: jboss_win32_1.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_win32_1.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_win32_1.html 2000/08/29 23:12:33 1.1
+++ jboss_win32_1.html 2000/09/01 23:53:45 1.2
@@ -1,148 +1,86 @@
<html>
-<head>
-<title>
-Step 1: installing jBoss
-</title>
-</head>
-
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 1: installing jBoss
</font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href="jboss_win32_trail_index.html"> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_2.html>
- FORWARD: Step 2: creating the Bean </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> Before installing and running the server, you should check that your
-<A HREF="http://java.sun.com/">JDK installation</A> is working.
-It is important that you use JDK1.3 for your
-Java installation as many functions of jBoss 2.0 depend on functionality
-that is only present in JDK1.3. You won't need to specify a CLASSPATH
- environment variable if you don't normally have to. <br>
-
- You will <i>need</i>
- the JDK binaries directory in your PATH (this is essential: see below) not just
- for the user account which is doing the installation, but also for the user
- account that will run the server. <br>
-
- If you are running the server on Windows NT as
Administrator, you
- should check that the JDK binaries are in the PATH even for Administrator.
(Administrator and ordinary
- users normally have different PATH settings.
- <CODE>Start | Settings | Control Panel | System | Environment tab | Path
variable</CODE>.
- In the Value field, put <CODE>c:\jdk1.3\bin;</CODE> in front. Click Set. Click
OK.) <P>
-
-Now you can download, install and test the jBoss
-server. At the time of writing the most recent version of jBoss is 2.0. You can get
jBoss
- from <a href=http://www.jboss.org/>www.jboss.org</a>. <br>
-
- jBoss is
- <A HREF="http://jboss.org/jBoss2/install.htm">distributed using Install
Anywhere</A>
- which is a signed Java applet that works pretty well on Windows.
-By default Install Anywhere will put jBoss in <code><a href="file:///c:/Program
Files/jboss2">c:\Program Files\jboss2</a></code>.
-(This may not be a good place if you're using Windows 95 because of the
-space in the path name. Try <CODE><a href="file:///c:/jboss">c:\jboss</a></CODE>
instead.)<br>
-
- On a Windows NT system, you will not need
Administrator
- priviledges. Although Install Anywhere may malfunction (you'll need to use "Other
Java-enabled Platforms"
- instead) jBoss will work perfectly well if installed in a user directory and run
as an
- ordinary user.
- I will assume in this tutorial that you are installing in <code>c:\Program
Files\jboss2</code>.
- If you haven't, change the paths as appropriate. <P>
-
-You could try running the server now. You can
-either run the program from the menu like <CODE>Start | Programs | jboss2 |
Server_jboss2</CODE> or change
-to the <code>bin</code> directory (note the quotation marks) and run
-<pre>
-cd "c:\Program Files\jboss2\bin"
-java -jar run.jar
-</pre>
- The server should
-start without any error messages or exceptions being thrown. It will produce about
-three pages of output on startup.
-<br>
- The jBoss distribution is supplied with one
-test Bean, packaged as <code>bank.jar</code> in the `deploy'
-subdirectory, which is where Beans are placed to deploy them. The effect of this
-is to deploy the `bank' bean when the server starts up. This is fine the first
-time, as it tests that the SQL server is working, but you can usefully move
<code>bank.jar</code>
-out of the <code>deploy</code> directory when you are sure that everything's OK,
-and the server will start up more quickly.<BR>
- On Windows networks it can be useful to
-share this 'deploy' directory
-so that others may simply drag and drop the .jar files containing beans into the
-container for deployment.</p>
-
-<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=5 BGCOLOR="#FFFF80">
- <TR VALIGN="TOP">
- <TH>Error Message</TH>
- <TH>Corrective Action</TH>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>Bad command or file name</TD>
- <TD>The JDK binaries aren't in the PATH. Check your PATH environment variable.
On Windows 95 and 98, you may need to edit <CODE>C:\AUTOEXEC.BAT</CODE> and restart
your computer.</TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[AutoDeploy]
-...NoClassDefFound: java/lang/reflect/InvocationHandler...</TD>
- <TD>You are using a version of JDK that is too old. The class
<CODE>java.lang.reflect.InvocationHandler</CODE>
-was new in version 1.3. On Windows 95 and 98, if you've just installed JDK 1.3, you
may need to edit the PATH environment variable in <CODE>C:\AUTOEXEC.BAT</CODE> and
restart your computer.</TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[hypersonic] System.run/init: database is in use by a different process</TD>
- <TD>The JDK binaries aren't in the PATH. If you get this message, the SQL
server hasn't started, and there will be a whole heap of other errors later. Check
your PATH environment variable. On Windows 95 and 98, you may need to edit
<CODE>C:\AUTOEXEC.BAT</CODE> and restart your computer.</TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>Failed to load Main-Class manifest attribute from<BR>
- run.jar</TD>
- <TD>You're not in the right directory and Java can't find file run.jar. Try
this:<PRE>
-cd "c:\Program Files\jboss2\bin"
-java -jar run.jar
-</PRE></TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[Webserver] java.net.UnknownHostException:...</TD>
- <TD>The jBoss server tries to establish its host's IP number when it starts up.
If it can't do this, you will see this error message. This problem is quite common on
systems that get their network configuration parameters dynamically. For example, if
your computer connects to the Internet by a dial-up connection, and you cancel the
dial-up process, you may end up with a hostname that doesn't make sense. Re-establish
your Internet connection.</TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[Webserver] java.net.BindException: Address already in use</TD>
- <TD>This probably means you already have jBoss running and you're trying to
start it a second time. CTL-ALT-DEL and use End Task to stop any current instances of
jBoss, then restart jBoss.</TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[Container factory] No configuration chosen. Using default
configuration</TD>
- <TD>No corrective action necessary. This means that a particular EJB did not
have a jboss.xml file in its META-INF directory (which is inside the EJB's .jar file
in the deploy/ directory). This isn't a real problem; jBoss will just use its default
configuration. <!--If you want to change the configuration, see <A
HREF="#somewhere_else">the section on jboss.xml.--></A></TD>
- </TR>
-
-</TABLE>
-
- When you're happy that the server is running
-correctly, go on to the next step.
-<p> </p>
-
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_linux_win32_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_win32_2.html>
- FORWARD: Step 2: creating the Bean </a></p>
- </td>
- </tr>
-</table>
-
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 1: installing jBoss</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 1: installing jBoss
</font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a
href="jboss_win32_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_2.html">FORWARD: Step 2:
creating the Bean </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Before installing and running the server, you should check that your <a
href="http://java.sun.com/">JDK installation</a> is working. It is important that you
use JDK1.3 for your Java installation as many functions of jBoss 2.0 depend on
functionality that is only present in JDK1.3. You won't need to specify a CLASSPATH
environment variable if you don't normally have to.<br>
+ You will <i>need</i> the JDK binaries
directory in your PATH (this is essential: see below) not just for the user account
which is doing the installation, but also for the user account that will run the
server.<br>
+ If you are running the server on Windows
NT as Administrator, you should check that the JDK binaries are in the PATH even for
Administrator. (Administrator and ordinary users normally have different PATH
settings. <code>Start | Settings | Control Panel | System | Environment tab | Path
variable</code>. In the Value field, put <code>c:\jdk1.3\bin;</code> in front. Click
Set. Click OK.)</p>
+ <p>Now you can download, install and test the jBoss server. At the time of
writing the most recent version of jBoss is 2.0. You can get jBoss from <a
href="http://www.jboss.org/">www.jboss.org</a>.<br>
+ jBoss is <a
href="http://jboss.org/jBoss2/install.htm">distributed using Install Anywhere</a>
which is a signed Java applet that works pretty well on Windows. By default Install
Anywhere will put jBoss in <a href="file:///c:/Program Files/jboss2"><code>c:\Program
Files\jboss2</code></a>. (This may not be a good place if you're using Windows 95
because of the space in the path name. Try <a
href="file:///c:/jboss"><code>c:\jboss</code></a> instead.)<br>
+ On a Windows NT system, you will not need
Administrator priviledges. Although Install Anywhere may malfunction (you'll need to
use "Other Java-enabled Platforms" instead) jBoss will work perfectly well
if installed in a user directory and run as an ordinary user. I will assume in this
tutorial that you are installing in <code>c:\Program Files\jboss2</code>. If you
haven't, change the paths as appropriate.</p>
+ <p>You could try running the server now. You can either run the program from
the menu like <code>Start | Programs | jboss2 | Server_jboss2</code> or change to the
<code>bin</code> directory (note the quotation marks) and run</p>
+ <pre>cd "c:\Program Files\jboss2\bin"
+java -jar run.jar</pre>
+ <p> The server should start without any
error messages or exceptions being thrown. It will produce about three pages of output
on startup.<br>
+ The jBoss distribution is supplied with
one test Bean, packaged as <code>bank.jar</code> in the `deploy' subdirectory, which
is where Beans are placed to deploy them. The effect of this is to deploy the `bank'
bean when the server starts up. This is fine the first time, as it tests that the SQL
server is working, but you can usefully move <code>bank.jar</code> out of the
<code>deploy</code> directory when you are sure that everything's OK, and the server
will start up more quickly.<br>
+ On Windows networks it can be useful to
share this 'deploy' directory so that others may simply drag and drop the .jar files
containing beans into the container for deployment.
+ <p>
+ <table border="1" cellspacing="0" cellpadding="5" bgcolor="#ffff80">
+ <tr valign="top">
+ <th>Error Message</th>
+ <th>Corrective Action</th>
+ </tr>
+ <tr valign="top">
+ <td>Bad command or file name</td>
+ <td>The JDK binaries aren't in the PATH. Check your PATH
environment variable. On Windows 95 and 98, you may need to edit
<code>C:\AUTOEXEC.BAT</code> and restart your computer.</td>
+ </tr>
+ <tr valign="top">
+ <td>[AutoDeploy] ...NoClassDefFound:
java/lang/reflect/InvocationHandler...</td>
+ <td>You are using a version of JDK that is too old. The class
<code>java.lang.reflect.InvocationHandler</code> was new in version 1.3. On Windows 95
and 98, if you've just installed JDK 1.3, you may need to edit the PATH environment
variable in <code>C:\AUTOEXEC.BAT</code> and restart your computer.</td>
+ </tr>
+ <tr valign="top">
+ <td>[hypersonic] System.run/init: database is in use by a
different process</td>
+ <td>The JDK binaries aren't in the PATH. If you get this
message, the SQL server hasn't started, and there will be a whole heap of other errors
later. Check your PATH environment variable. On Windows 95 and 98, you may need to
edit <code>C:\AUTOEXEC.BAT</code> and restart your computer.</td>
+ </tr>
+ <tr valign="top">
+ <td>Failed to load Main-Class manifest attribute from<br>
+ run.jar</td>
+ <td>You're not in the right directory and Java can't find file
run.jar. Try this:
+ <pre>cd "c:\Program Files\jboss2\bin"
+java -jar run.jar</pre>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>[Webserver] java.net.UnknownHostException:...</td>
+ <td>The jBoss server tries to establish its host's IP number
when it starts up. If it can't do this, you will see this error message. This problem
is quite common on systems that get their network configuration parameters
dynamically. For example, if your computer connects to the Internet by a dial-up
connection, and you cancel the dial-up process, you may end up with a hostname that
doesn't make sense. Re-establish your Internet connection.</td>
+ </tr>
+ <tr valign="top">
+ <td>[Webserver] java.net.BindException: Address already in
use</td>
+ <td>This probably means you already have jBoss running and
you're trying to start it a second time. CTL-ALT-DEL and use End Task to stop any
current instances of jBoss, then restart jBoss.</td>
+ </tr>
+ </table>
+ When you're happy that the server is
running correctly, go on to the next step.
+ <p> </p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a
href="jboss_linux_win32_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_win32_2.html">FORWARD: Step 2:
creating the Bean </a></center>
+ </td>
+ </tr>
+ </table>
</html>
1.2 +121 -124 jbossweb/jboss_cmp4.html
Index: jboss_cmp4.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_cmp4.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_cmp4.html 2000/08/29 23:12:04 1.1
+++ jboss_cmp4.html 2000/09/01 23:53:46 1.2
@@ -1,55 +1,54 @@
<html>
-<head>
-<title>
-Step 4: creating a test client
-</title>
-</head>
-
-<font face=arial,helvetica size=+3 color="#ffcc00"> Step 4: creating a test client
</font>
-<p>
-<p><font face=arial,helvetica size=+2>Using CMP with jBoss</font> </p>
-<table align=center>
- <tr>
- <td>
- <p align=center><a href=jboss_cmp3.html > Step 3: packaging and deploying
- the Beans </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_cmp_trail_index.html > contents </a></p>
- </td>
- </tr>
-</table>
-<p> Client for EJBs may be any Java program or applet; in this simple example
- I will describe a very simple client program that can be run from the command
- line. It simply dumps the attributes of all the CD Beans to standard output.
- The <a href=CDEJB.tar.gz>source code</a> also provides clients for searching
- and uploading to the database, all operating at the command line. <br>
- The client does not interact directly with
- CD instances, it uses the CDCollection bean as a mediator. CDCollection is a
- stateless session bean. In this example, the client calls the `findAll' method
- to get references to all the CD objects currently in the system. To run this
- client, you will first need to get some CD objects created. You can use the
- `Upload' client for this, to create CD instances from a text file. <br>
- To avoid the necessity to specify the URL
- of the Bean server in the client source code, this client reads the required
- information from a properties file called `cd.properties'. The file should
contain
- the URL and driver for the naming service, like this:
-<p>
-<hr>
-<pre>
-java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
-java.naming.provider.url=localhost:1099
-</pre>
-<hr>
-<p> Of course, if your server and client are on different computers, you will
- need to change `localhost' to the real location of the server. <br>
- Here is the full listing of the `List'
- client.
-<p>
-<hr>
-<pre>
-package com.web_tomorrow.cd;
-import javax.naming.*;
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 4: creating a test client</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 4: creating a test
client </font>
+ <p><font face="arial,helvetica" size="5">Using CMP with jBoss</font></p>
+ <p>
+ <table align="center">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_cmp3.html">Step 3: packaging
and deploying the Beans </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_cmp_trail_index.html">contents
</a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Client for EJBs may be any Java program or applet; in this simple example I
will describe a very simple client program that can be run from the command line. It
simply dumps the attributes of all the CD Beans to standard output. The <a
href="CDEJB.tar.gz">source code</a> also provides clients for searching and uploading
to the database, all operating at the command line.<br>
+ The client does not interact directly
with CD instances, it uses the CDCollection bean as a mediator. CDCollection is a
stateless session bean. In this example, the client calls the `findAll' method to get
references to all the CD objects currently in the system. To run this client, you will
first need to get some CD objects created. You can use the `Upload' client for this,
to create CD instances from a text file.<br>
+ To avoid the necessity to specify the URL
of the Bean server in the client source code, this client reads the required
information from a properties file called `cd.properties'. The file should contain the
URL and driver for the naming service, like this:</p>
+ <p>
+ <hr>
+ </p>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+
<td>java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+ <pre>java.naming.provider.url=localhost:1099</pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ <hr>
+ <p>Of course, if your server and client are on different computers, you will
need to change `localhost' to the real location of the server.<br>
+ Here is the full listing of the `List'
client.</p>
+ <p>
+ <hr>
+ </p>
+ <pre></pre>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>package com.web_tomorrow.cd;
+ <pre>import javax.naming.*;
import java.util.Hashtable;
import javax.rmi.PortableRemoteObject;
import java.util.Properties;
@@ -63,78 +62,76 @@
class List
{
public static void main(String[] args)
- {
- // Get information about the Bean server from the properties file
- Properties props = new Properties();
- Properties sysProps = System.getProperties();
- try
- {
- props.load (new FileInputStream ("cd.properties"));
- sysProps.putAll(props);
- }
- catch (Exception e)
- {
- System.err.println ("Can't read `cd.proprties'");
- System.exit (-1);
- }
- System.setProperties (sysProps);
-
- // Enclosing the whole process in a single `try' block is not an ideal way
- // to do exception handling, but I don't want to clutter the program up
- // with catch blocks
- try
- {
- // Get a naming context
- InitialContext jndiContext = new InitialContext();
-
- // Get a reference to a CD Bean
- Object ref = jndiContext.lookup("cd/CDCollection");
-
- // Get a reference from this to the Bean's Home interface
- CDCollectionHome home = (CDCollectionHome)
- PortableRemoteObject.narrow (ref, CDCollectionHome.class);
-
- CDCollection cdCollection = home.create();
-
- CD[] cds = cdCollection.findAll();
- for (int i = 0; i < cds.length; i++)
- {
- System.out.println (cds[i].getId() + "\t" + cds[i].getTitle()
+ "\t" +
- cds[i].getArtist() + "\t" + cds[i].getType());
- }
- }
- catch(Exception e)
- {
- System.out.println(e.toString());
- }
- }
-}
-</pre>
-<hr>
-<p> To run this client you will need to specify in the CLASSPATH the location
- the jBoss client libraries, so the command line will be like this:
-<pre>
-java -classpath
$CLASSPATH:/usr/lib/jboss/lib/ext/ejb.jar:/usr/lib/jboss/client/jboss-client.jar \
-com.web_tomorrow.cd.List;
-</pre>
-If all is well, you will get a list of CDs. <br>
- So we've created an entity EJB, and a client
-program that uses it. You'll agree, I hope, that it isn't that much more
complicated
-than creating a session EJB. The additional steps required are:
-<ul>
- <li> The <code>ejb-jar.xml</code> file needs to indicate that the object is
- persistent, and list the persistent fields. It also needs to specify the name
- and class of the primary key field.
- <li> In the <code>jboss.xml</code> file indicate that the configuration for
- the Bean is <code>CMP EntityBean</code>
- <li> If the default column names and types aren't what you need, create a file
- <code>jaws.xml</code> to specify them.
-</ul>
-If you've followed the tutorial, you might like to read the <a
href=cmp_jboss_discussion.html>discussion</a>
-which gives some suggestions about optimization and suitability of
container-managed
-Beans.
-<p> </p>
-<p>
+{
+ // Get information about the Bean server from the properties file
+ Properties props = new Properties();
+ Properties sysProps = System.getProperties();
+ try
+ {
+ props.load (new FileInputStream ("cd.properties"));
+ sysProps.putAll(props);
+ }
+ catch (Exception e)
+ {
+ System.err.println ("Can't read `cd.proprties'");
+ System.exit (-1);
+ }
+ System.setProperties (sysProps);
+
+ // Enclosing the whole process in a single `try' block is not an ideal way
+ // to do exception handling, but I don't want to clutter the program up
+ // with catch blocks
+ try
+ {
+ // Get a naming context
+ InitialContext jndiContext = new InitialContext();
+
+ // Get a reference to a CD Bean
+ Object ref = jndiContext.lookup("cd/CDCollection");
+
+ // Get a reference from this to the Bean's Home interface
+ CDCollectionHome home = (CDCollectionHome)
+ PortableRemoteObject.narrow (ref, CDCollectionHome.class);
+
+ CDCollection cdCollection = home.create();
+
+ CD[] cds = cdCollection.findAll();
+ for (int i = 0; i < cds.length; i++)
+ {
+ System.out.println (cds[i].getId() + "\t" + cds[i].getTitle() +
"\t" +
+ cds[i].getArtist() + "\t" + cds[i].getType());
+ }
+ }
+ catch(Exception e)
+ {
+ System.out.println(e.toString());
+ }
+ }
+}</pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ <hr>
+ <p>To run this client you will need to specify in the CLASSPATH the location
the jBoss client libraries, so the command line will be like this:</p>
+ <pre></pre>
+ <p>
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>java -classpath
$CLASSPATH:/usr/lib/jboss/lib/ext/ejb.jar:/usr/lib/jboss/client/jboss-client.jar \
+ <pre>com.web_tomorrow.cd.List;</pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>If all is well, you will get a list of CDs.<br>
+ So we've created an entity EJB, and a
client program that uses it. You'll agree, I hope, that it isn't that much more
complicated than creating a session EJB. The additional steps required are:
+ <ul>
+ <li>The <code>ejb-jar.xml</code> file needs to indicate that the
object is persistent, and list the persistent fields. It also needs to specify the
name and class of the primary key field.
+ <li>If the default column names and types aren't what you need, create
a file <code>jaws.xml</code> to specify them.
+ </ul>
+ <p> </p>
+ <p></body>
-</body>
</html>
1.2 +103 -106 jbossweb/jboss_cmp3.html
Index: jboss_cmp3.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_cmp3.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_cmp3.html 2000/08/29 23:12:04 1.1
+++ jboss_cmp3.html 2000/09/01 23:53:46 1.2
@@ -1,36 +1,39 @@
<html>
-<head>
-<title>
-Step 3: packaging and deploying the Beans
-</title>
-</head>
-
-<font face=arial,helvetica size=+3 color="#ffcc00"> Step 3: packaging and deploying
-the Beans </font>
-<p>
-<p><font face=arial,helvetica size=+2>Using CMP with jBoss</font> </p>
-<table align=center>
- <tr>
- <td>
- <p align=center><a href=jboss_cmp2.html> Step 2: creating the Beans </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_cmp_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_cmp4.html > Step 4: creating a test client
- </a></p>
- </td>
- </tr>
-</table>
-<p> Deploying an entity bean requires providing some extra information, in addition
- to that required for a session bean. This information is provided in the
deployment
- descriptor <code>ejb-jar.xml</code>
-<p>
-<hr>
-<pre>
-<enterprise-beans>
- <entity>
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 3: packaging and deploying the Beans</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 3: packaging and
deploying the Beans </font>
+ <p><font face="arial,helvetica" size="5">Using CMP with jBoss</font></p>
+ <p>
+ <table align="center">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_cmp2.html">Step 2: creating the
Beans </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_cmp_trail_index.html">contents
</a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_cmp4.html">Step 4: creating a
test client </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Deploying an entity bean requires providing some extra information, in
addition to that required for a session bean. This information is provided in the
deployment descriptor <code>ejb-jar.xml</code></p>
+ <p>
+ <hr>
+ </p>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td><enterprise-beans>
+ <pre> <entity>
<description>Models a music CD</description>
<ejb-name>CDBean</ejb-name>
<home>com.web_tomorrow.cd.CDHome</home>
@@ -49,30 +52,32 @@
<!-- more beans here -->
-</entity-beans>
-</pre>
-<hr>
-<p> The listing above shows the section of <code>ejb-jar.xml</code> that is
relevant
- to the CD Bean. It has the usual information about the classes that consitute
- the Bean, but it also specifies the type and name of the primary key, and the
- fields that are persistent. Note that in this case the `id' field gets listed
- twice: once as a persistent field and then again as the primary key field. It
- might be thought that specifying a field as a primary key would automatically
- make it persistent, but it doesn't. Leaving out the <ccode>cmp-field definition
- for the primary key results in this error message at deployment time:
-<pre>
-[JAWS] Initializing JAWS plugin for CDBean
-[Container factory] java.lang.NoSuchFieldException: CASE_INSENSITIVE_ORDER
-</pre>
-The deployment descriptor for the CDCollection class does not require any
persistence
-information, but it does require an <code>ejb-ref</code> section; this indicates
-that the CDCollection Bean refers to CD Bean instances. The <code>ejb-ref</code>
-section lists the type of the CD Bean, and all its classes.
-<p>
-<hr>
-<pre>
- <session>
- <description>Models a music CD collection</description>
+</entity-beans></pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ <hr>
+ <p>The listing above shows the section of <code>ejb-jar.xml</code> that is
relevant to the CD Bean. It has the usual information about the classes that consitute
the Bean, but it also specifies the type and name of the primary key, and the fields
that are persistent. Note that in this case the `id' field gets listed twice: once as
a persistent field and then again as the primary key field. It might be thought that
specifying a field as a primary key would automatically make it persistent, but it
doesn't. Leaving out the<ccode>cmp-field definition for the primary key results in
this error message at deployment time:</p>
+ <p>
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>[JAWS] Initializing JAWS plugin for CDBean
+ <pre>[Container factory]
java.lang.NoSuchFieldException: CASE_INSENSITIVE_ORDER</pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>The deployment descriptor for the CDCollection class does not require any
persistence information, but it does require an <code>ejb-ref</code> section; this
indicates that the CDCollection Bean refers to CD Bean instances. The
<code>ejb-ref</code> section lists the type of the CD Bean, and all its classes.
+ <p>
+ <hr>
+ </p>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td><session>
+ <pre> <description>Models a music CD
collection</description>
<ejb-name>CDCollectionBean</ejb-name>
<home>com.web_tomorrow.cd.CDCollectionHome</home>
<remote>com.web_tomorrow.cd.CDCollection</remote>
@@ -86,16 +91,23 @@
<remote>com.web_tomorrow.cd.CD</remote>
<ejb-link>com.web_tomorrow.cd.CDBean</ejb-link>
</ejb-ref>
-</session>
-</pre>
-<hr>
-<p> In the jBoss run-time configuration file `jboss.xml' we should specify the
- type of configuration to be used by Beans, and their JNDI names, like this:
-<p>
-<hr>
-<pre>
-<entity>
- <ejb-name>CDBean</ejb-name>
+</session></pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ <hr>
+ <p>In the jBoss run-time configuration file `jboss.xml' we should specify the
type of configuration to be used by Beans, and their JNDI names, like this:</p>
+ <p>
+ <hr>
+ </p>
+ <pre></pre>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td><entity>
+ <pre> <ejb-name>CDBean</ejb-name>
<jndi-name>cd/CD</jndi-name>
<configuration-name>CMP EntityBean</configuration-name>
</entity>
@@ -104,22 +116,21 @@
<ejb-name>CDCollectionBean</ejb-name>
<jndi-name>cd/CDCollection</jndi-name>
<configuration-name>Default Stateless SessionBean</configuration-name>
-</session>
-</pre>
-<hr>
-<p> This says the `CDBean' uses the configuration `CMP EntityBean' and has the
- JNDI name `cd/CD'. `CDCollectionBean' uses the configuration `Default Stateless
- SessionBean' and has the JNDI name `cd/CDCollection'. Note that the method of
- specifying these configurations depends on the server. <br>
- When packaging these Beans, don't forget
- to include the files <code>ejb-jar.xml</code> and <code>jboss.jar</code> in
- the directory <code>META-INF</code>. <br>
- During deployment (simply copy the packaged
- beans to the `deploy' subdirectory of the jBoss directory) you should see a
- message like the following:
-<pre>
-[Container factory] Deploying:file:/usr/lib/jboss/deploy/cd.jar
-[Container factory] Deploying CDBean
+</session></pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ <hr>
+ <p>This says the `CDBean' uses the configuration `CMP EntityBean' and has the
JNDI name `cd/CD'. `CDCollectionBean' uses the configuration `Default Stateless
SessionBean' and has the JNDI name `cd/CDCollection'. Note that the method of
specifying these configurations depends on the server.<br>
+ When packaging these Beans, don't forget
to include the files <code>ejb-jar.xml</code> and <code>jboss.jar</code> in the
directory <code>META-INF</code>.<br>
+ During deployment (simply copy the
packaged beans to the `deploy' subdirectory of the jBoss directory) you should see a
message like the following:</p>
+ <p>
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>[Container factory]
Deploying:file:/usr/lib/jboss/deploy/cd.jar
+ <pre>[Container factory] Deploying CDBean
[Container factory] Deploying CDCollectionBean
[JAWS] Initializing JAWS plugin for CDBean
[JAWS] Remove:DELETE FROM CDBean WHERE id=?
@@ -135,29 +146,15 @@
[Container factory] Started: CDCollectionBean
[Container factory] Bound CDBean to cd/CD
[Container factory] Bound CDCollectionBean to cd/CDCollection
-[Container factory] Deployed application: file:/usr/lib/jboss/deploy/cd.jar
-</pre>
-`JAWS' is the jBoss interface to the database engine. During deployment JAWS has
-deleted any existing table called `CDBean', then created a new CDBean table with
-the specified column layout. How does it know to use <code>VARCHAR(256)</code>
-for each field? It doesn't: it's guessing because we haven't provided any other
-information. During deployment, JAWS looks for a file called `jaws.xml'; if this
-file exists it is read to configure the names and geometry of the database tables.
-<code>VARCHAR(256)</code> is the default for String attributes. The default table
-name is the same as that of the Bean class, which is why we have ended up with
-a table called `CDBean'. This also can be over-ridden in jaws.xml. In practice,
-the JAWS defaults are adequate for most applications. However, there may be speed
-advantages to using fixed-length fields (e.g., <code>CHAR(XX)</code> rather than
-variable-length ones if at all possible. <br>
- Note that it can be very difficult to change
-the number or names of columns in the table once there is data in it. jBoss gets
-very confused by this, as you would expect. When a CMP Bean is re-deployed, JAWS
-tries to write into its table all the data it had in its last deployment. If the
-table has different columns it probably won't be able to do that. This means that
-it is important to get the persistent fields thoroughly correct before starting
-to put real data into the application.
-<p> </p>
-<p>
+[Container factory] Deployed application: file:/usr/lib/jboss/deploy/cd.jar</pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p></p>
+ <p>`JAWS' is the jBoss interface to the database engine. During deployment
JAWS has deleted any existing table called `CDBean', then created a new CDBean table
with the specified column layout. How does it know to use <code>VARCHAR(256)</code>
for each field? It doesn't: it's guessing because we haven't provided any other
information. During deployment, JAWS looks for a file called `jaws.xml'; if this file
exists it is read to configure the names and geometry of the database tables.
<code>VARCHAR(256)</code> is the default for String attributes. The default table name
is the same as that of the Bean class, which is why we have ended up with a table
called `CDBean'. This also can be over-ridden in jaws.xml. In practice, the JAWS
defaults are adequate for most applications. However, there may be speed advantages to
using fixed-length fields (e.g., <code>CHAR(XX)</code> rather than variable-length
ones if at all possible.<br>
+ Note that it can be very difficult to
change the number or names of columns in the table once there is data in it. jBoss
gets very confused by this, as you would expect. When a CMP Bean is re-deployed, JAWS
tries to write into its table all the data it had in its last deployment. If the table
has different columns it probably won't be able to do that. This means that it is
important to get the persistent fields thoroughly correct before starting to put real
data into the application.
+ <p> </p>
+ <p></body>
-</body>
</html>
1.2 +86 -91 jbossweb/jboss_cmp2.html
Index: jboss_cmp2.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_cmp2.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_cmp2.html 2000/08/29 23:12:03 1.1
+++ jboss_cmp2.html 2000/09/01 23:53:46 1.2
@@ -1,40 +1,39 @@
<html>
-<head>
-<title>
-Step 2: creating the Beans
-</title>
-</head>
-
-<font face=arial,helvetica size=+3 color="#ffcc00"> Step 2: creating the Beans
</font>
-<p>
-<p><font face=arial,helvetica size=+2>Using CMP with jBoss</font> </p>
-<table align=center>
- <tr>
- <td>
- <p align=center><a href=jboss_cmp1.html > Step 1: determine the persistent
- classes </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_cmp_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_cmp3.html > Step 3: packaging and deploying
- the Beans </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> The entity bean representing the CD is very easy to code, as it doesn't have
- to do a great deal. All the issues of persistence will be taken care of by the
- server. I will present the full code for this Bean below; the code for the
CDCollection
- Bean will not be discussed further because it is not interesting in the context
- of container-managed persistence. Remember that the full source code is available
- to download: <a href=/CDEJB.tar.gz>click here</a>.
-<p> <b>CD.java: remote interface for the `CD' Bean</b><br>
-<hr>
-<pre>
-package com.web_tomorrow.cd;
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 2: creating the Beans</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 2: creating the
Beans </font>
+ <p><font face="arial,helvetica" size="5">Using CMP with jBoss</font></p>
+ <p>
+ <table align="center">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss_cmp1.html">Step 1: determine
the persistent classes </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_cmp_trail_index.html">contents
</a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss_cmp3.html">Step 3: packaging
and deploying the Beans </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>The entity bean representing the CD is very easy to code, as it doesn't
have to do a great deal. All the issues of persistence will be taken care of by the
server. I will present the full code for this Bean below; the code for the
CDCollection Bean will not be discussed further because it is not interesting in the
context of container-managed persistence. Remember that the full source code is
available to download: <a href="/CDEJB.tar.gz">click here</a>.</p>
+ <p><b>CD.java: remote interface for the `CD' Bean</b><br>
+ <hr>
+ </p>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>package com.web_tomorrow.cd;
+ <pre>
import java.rmi.RemoteException;
import javax.ejb.*;
@@ -92,33 +91,31 @@
Set notes
*/
public abstract void setNotes(String type) throws RemoteException;
-}
-</pre>
-<hr>
-The remote interface specifies methods to get and set the attributes of the object.
-That's all it needs to do in this example. Note that, as with any Java Bean, the
-names of these methods must follow the standard convention; that is, if an
attribute
-is called `String X' then the `get' and `set' methods must be defined as follows:
-<pre>
-string getX();
-void setX(String);
-</pre>
-<p> Note also that jBoss <i>requires</i> that these methods are declared as
`abstract'
- when using CMP. It does not matter for session Beans, and some EJB server aren't
- fussy (e.g., Sun J2EE), but with CMP in jBoss you need to say `abstract'. Failure
- to do so will result in the following error message during deployment:
-<pre>
-[Container factory] org.jboss.ejb.DeploymentException: Could not find matching
+}</pre>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ <hr>
+ The remote interface specifies methods to get and set the attributes of the
object. That's all it needs to do in this example. Note that, as with any Java Bean,
the names of these methods must follow the standard convention; that is, if an
attribute is called `String X' then the `get' and `set' methods must be defined as
follows:
+ <pre>string getX();
+void setX(String);</pre>
+ <p>Note also that jBoss <i>requires</i> that these methods are declared as
`abstract' when using CMP. It does not matter for session Beans, and some EJB server
aren't fussy (e.g., Sun J2EE), but with CMP in jBoss you need to say `abstract'.
Failure to do so will result in the following error message during deployment:</p>
+ <pre>[Container factory] org.jboss.ejb.DeploymentException: Could not find
matching
method for public abstract java.lang.String somepackage.getSomeField()
throws java.rmi.RemoteException, Cause:java.lang.NoSuchMethodException:
getSomeField()
-</pre>
-<p> <b>CDHome.java: home interface for the `CD' Bean</b><br>
-<hr>
-<pre>
-package com.web_tomorrow.cd;
-import java.rmi.RemoteException;
+//MF FIXME: is this still true??? does the new JAWS allow this?</pre>
+ <p><b>CDHome.java: home interface for the `CD' Bean</b><br>
+ <hr>
+ </p>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>package com.web_tomorrow.cd;
+ <pre>import java.rmi.RemoteException;
import javax.ejb.*;
import java.util.Collection;
@@ -151,23 +148,23 @@
public Collection findAll() throws RemoteException, FinderException;
}
</pre>
-<hr>
-<p> The important thing to note about this interface is that it specifies methods
- that don't need to be implemented. In this case, <code>findByPrimaryKey()</code>,
- <code>findByType()</code> and <code>findAll()</code> are all examples of `finder'
- methods. The EJB specification requires that the server be able to provide finder
- methods for all the persistent attributes in the object. So, for example, if
- your class has an attribute `X', then the server will provide a `findByX' method
- to search on that field. Note that with jBoss the search is `exact'; that is,
- it won't accept wild-card characters or an incorrect mixture of upper- and
lower-case
- letters. The <code>findByPrimaryKey()</code> searches on the primary key field;
- we will discuss how the primary key is specified later.
-<p> <b>CDBean.java: implementation of the `CD' Bean</b><br>
-<hr>
-<pre>
-package com.web_tomorrow.cd;
-
-import java.rmi.RemoteException;
+ </td>
+ </tr>
+ </table>
+ </p>
+ <pre>
+</pre>
+ <p>
+ <hr>
+ <p>The important thing to note about this interface is that it specifies
methods that don't need to be implemented. In this case,
<code>findByPrimaryKey()</code>, <code>findByType()</code> and <code>findAll()</code>
are all examples of `finder' methods. The EJB specification requires that the server
be able to provide finder methods for all the persistent attributes in the object. So,
for example, if your class has an attribute `X', then the server will provide a
`findByX' method to search on that field. Note that with jBoss the search is `exact';
that is, it won't accept wild-card characters or an incorrect mixture of upper- and
lower-case letters. The <code>findByPrimaryKey()</code> searches on the primary key
field; we will discuss how the primary key is specified later.</p>
+ <p><b>CDBean.java: implementation of the `CD' Bean</b><br>
+ <hr>
+ </p>
+ <p>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>package com.web_tomorrow.cd;
+ <pre>import java.rmi.RemoteException;
import javax.ejb.*;
/**
@@ -189,10 +186,10 @@
creation is managed by the EJB container.
*/
public String ejbCreate (String _id)
- {
- id = _id;
- return null;
- }
+{
+ id = _id;
+ return null;
+}
/**
Called when the object has been instantiated; does nothing in this example
@@ -225,17 +222,15 @@
public void ejbRemove() { }
}
</pre>
-<hr>
-The CDBean class provides implementations of the methods that aren't provided
-automatically by the EJB container. Note that the <code>ejbCreate</code> method
-returns `null', meaning that the container should take care of initializing the
-instance in the server's process space. Because the CD Bean is essentially passive
--- a data repository -- it only has a few methods.
-<p> These classes (and the CDCollection classes) can be compiled in the usual
- way; don't forget to include the path to the jBoss EJB class library in your
- classpath, e.g.,
-<p>javac -classpath /usr/lib/jboss/lib/ext/ejb.jar:. .... </p>
-<p>
+ </td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ <hr>
+ The CDBean class provides implementations of the methods that aren't provided
automatically by the EJB container. Note that the <code>ejbCreate</code> method
returns `null', meaning that the container should take care of initializing the
instance in the server's process space. Because the CD Bean is essentially passive --
a data repository -- it only has a few methods.
+ <p>These classes (and the CDCollection classes) can be compiled in the usual
way; don't forget to include the path to the jBoss EJB class library in your
classpath, e.g.,</p>
+ <p>javac -classpath /usr/lib/jboss/lib/ext/ejb.jar:. ....</p>
+ <p></body>
-</body>
</html>
1.2 +28 -75 jbossweb/jboss_cmp.html
Index: jboss_cmp.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss_cmp.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss_cmp.html 2000/08/29 23:12:02 1.1
+++ jboss_cmp.html 2000/09/01 23:53:46 1.2
@@ -1,78 +1,31 @@
<html>
-<head>
-<title>
-Using container-managed persistence with jBoss
-</title>
-</head>
-<font face=arial,helvetica size=+3 color="#ffcc00"> Using container-managed
persistence
-with jBoss </font>
-<p> <a href=jboss_linux.html >EJBs on jBoss</a>
-<p>By Kevin Boone (<a
href=mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED]</a>)
-<p> <font face=arial,helvetica size=+2>What this article is about</font>
-<p> This article presensts a step-by-step example of creating, deploying and
testing
- an Entity JavaBean that uses `container-managed persistence' with the jBoss
- EJB server. This example is very simple, and is a variation of the old favourite
- `music CD' case study. I have chosen this example because the application is
- likely to be familiar to most people without much explanation. In short, the
- `CD' EJB models a music CD. Applications will want to add and delete CDs to
- a collection, and search the collection for specific CDs. There is also a
`CDCollection'
- EJB that lists and searches collections of CDs. <br>
- The full source code to accompany this
- article can be found here (in gzipped tar format). This archive contains the
- Java source code, JavaDoc documentation, and a text file of test data (CDs.txt)
- to initialize the database. <br>
- Although I will occasionally make reference
- to Linux, this is only because that's what I use for EJB development; most of
- the material in this article will work with any Unix version, and even with
- Windows NT if the directory structure is adjusted accordingly.
-<p> <font face=arial,helvetica size=+2>Pre-requisites</font>
-<p> You will need a fully-functioning jBoss installation to follow this tutorial,
- which must have a working database connection. I will assume that you are
basically
- familiar with EJBs and know how to structure and compile JavaBeans as Java
packages.
- Also I will assume you know the basic structure of a <i>deployment
descriptor</i>,
- and the run-time descriptor that jBoss uses (jboss.xml). I will assume that
- you know how to package and deploy EJBs using jBoss. If you don't know about
- these things, you might want to look at my <a href=jboss_linux.html>introductory
- article</a> on jBoss first.
-<p> <font face=arial,helvetica size=+2>jBoss hints</font>
-<p> jBoss is written entirely in Java, as is the `Hypersonic' database with which
- it is supplied. Searching a database requires lots of repetitive operations,
- and an interpreting Java system will be extremely slow if the database is large.
- If you are using the Sun JDK, you will need to ensure that it is configured
- to use the `Hotspot' virtual machine, to achieve anything close to acceptable
- performance. For the purposes of study, you could get along by ensuring that
- the database size is kept small, but with even a hundred objects you will find
- it too slow to use. Some Linux systems are reluctant to use the `Hotspot' JVM,
- but they can normally be coerced to.
-<p> <font face=arial,helvetica size=+2>Persistence: review</font>
-<p> There are, in essence, two kinds of Enterprise JavaBean: <i>session</i> and
- <i>entity</i>. Entity EJBs contain information that is persistent across
different
- client-Bean interactions, while session EJBs don't. For example, a class called
- `Customer' that represents the customers of a particular service will contain
- persistent information (about the customer). A class called `CustomerFinder',
- say, that finds Customer instances that match certain criteria is likely to
- be a session EJB, because it does not require information that is maintained
- between different client-server interactions. <br>
- Session EJBs can be further divided into
- `stateless' and `stateful'. A stateful session EJB has a state that is persistent
- between invocations of its methods. A stateless EJB does not even have to retain
- its state between method invocations. The stateless session EJB is therefore
- the type of EJB that exhibits the least persistence. <br>
- The entity EJBs contain information that
- persists even when no clients are using any of the Bean's services; the
information
- should persist even if the server is restarted. There is a high degree of
correspondence
- between instances of an entity EJB and rows of a database table. In practice,
- all EJB servers implement entity instances as table rows. This correspondence
- is so strong that the notion of a `primary key' is relevant to an entity EJB.
- Of course, a primary key is a database concept, not an object-orientation concept
- at all. <br>
- The persistence of an entity EJB may be
- managed by the Bean itself, or by the server (technically by the `container').
- The latter technique is called `Container-managed persistence', and is the
subject
- of the rest of this article.
-<p> <a href=jboss_cmp1.html>Begin tutorial...</a>
-<p> After the tutorial, you might like to read the <a
href=cmp_jboss_discussion.html>discussion</a>
-<p>
-</body>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Using container-managed persistence with jBoss</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Using container-managed
persistence with jBoss </font>
+ <p><a href="jboss_linux.html">EJBs on jBoss</a></p>
+ <p>By Kevin Boone (<a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)</p>
+ <p><font face="arial,helvetica" size="5">What this article is about</font></p>
+ <p>This article presensts a step-by-step example of creating, deploying and
testing an Entity JavaBean that uses `container-managed persistence' with the jBoss
EJB server. This example is very simple, and is a variation of the old favourite
`music CD' case study. I have chosen this example because the application is likely to
be familiar to most people without much explanation. In short, the `CD' EJB models a
music CD. Applications will want to add and delete CDs to a collection, and search the
collection for specific CDs. There is also a `CDCollection' EJB that lists and
searches collections of CDs.<br>
+ The full source code to accompany this
article can be found here (in gzipped tar format). This archive contains the Java
source code, JavaDoc documentation, and a text file of test data (CDs.txt) to
initialize the database.<br>
+ Although I will occasionally make
reference to Linux, this is only because that's what I use for EJB development; most
of the material in this article will work with any Unix version, and even with Windows
NT if the directory structure is adjusted accordingly.</p>
+ <p><font face="arial,helvetica" size="5">Pre-requisites</font></p>
+ <p>You will need a fully-functioning jBoss installation to follow this
tutorial, which must have a working database connection. I will assume that you are
basically familiar with EJBs and know how to structure and compile JavaBeans as Java
packages. Also I will assume you know the basic structure of a <i>deployment
descriptor</i>, and the run-time descriptor that jBoss uses (jboss.xml). I will assume
that you know how to package and deploy EJBs using jBoss. If you don't know about
these things, you might want to look at my <a href="jboss_linux.html">introductory
article</a> on jBoss first.</p>
+ <p><font face="arial,helvetica" size="5">jBoss hints</font></p>
+ <p>jBoss is written entirely in Java, as is the `Hypersonic' database with
which it is supplied. Searching a database requires lots of repetitive operations, and
an interpreting Java system will be extremely slow if the database is large. If you
are using the Sun JDK, you will need to ensure that it is configured to use the
`Hotspot' virtual machine, to achieve anything close to acceptable performance. For
the purposes of study, you could get along by ensuring that the database size is kept
small, but with even a hundred objects you will find it too slow to use. Some Linux
systems are reluctant to use the `Hotspot' JVM, but they can normally be coerced
to.</p>
+ <p><font face="arial,helvetica" size="5">Persistence: review</font></p>
+ <p>There are, in essence, two kinds of Enterprise JavaBean: <i>session</i> and
<i>entity</i>. Entity EJBs contain information that is persistent across different
client-Bean interactions, while session EJBs don't. For example, a class called
`Customer' that represents the customers of a particular service will contain
persistent information (about the customer). A class called `CustomerFinder', say,
that finds Customer instances that match certain criteria is likely to be a session
EJB, because it does not require information that is maintained between different
client-server interactions.<br>
+ Session EJBs can be further divided into
`stateless' and `stateful'. A stateful session EJB has a state that is persistent
between invocations of its methods. A stateless EJB does not even have to retain its
state between method invocations. The stateless session EJB is therefore the type of
EJB that exhibits the least persistence.<br>
+ The entity EJBs contain information that
persists even when no clients are using any of the Bean's services; the information
should persist even if the server is restarted. There is a high degree of
correspondence between instances of an entity EJB and rows of a database table. In
practice, all EJB servers implement entity instances as table rows. This
correspondence is so strong that the notion of a `primary key' is relevant to an
entity EJB. Of course, a primary key is a database concept, not an object-orientation
concept at all.<br>
+ The persistence of an entity EJB may be
managed by the Bean itself, or by the server (technically by the `container'). The
latter technique is called `Container-managed persistence', and is the subject of the
rest of this article.</p>
+ <p><b>When to Use CMP or BMP?</b></p>
+ <p>Unlike what many folks believe, the choice of going BMP or CMP is
not really one of "trade-off". If you have already schemas deployed
you may find that the complexity of the schemas requires you to go with BMP or use a
BMP generating tool such as "cocobase". These techniques are what
we call "fake CMP" where the work of accessing the database is left to the
generated classes. </p>
+ <p>The breed of CMP that has most value is the "real CMP" or a
CMP where you let the container manage the persistent representation of your
beans entirerly. This might not work right now for you if your object are
complex but should work in most simple cases. EJB2.0 also goes the extra length to
make the persistent engines powerful and fast with management of dependencies and
relationships. We believe that one day you will rely on the engines to manage
the schemas, just like you rely on a compiler to optimize assembly code.</p>
+ <p><a href="jboss_cmp1.html">Begin tutorial...</a></p>
+ <p></body>
+
</html>
1.2 +70 -91 jbossweb/jboss6.html
Index: jboss6.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss6.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss6.html 2000/08/29 23:12:02 1.1
+++ jboss6.html 2000/09/01 23:53:46 1.2
@@ -1,99 +1,78 @@
<html>
-<head>
-<title>
-Step 6: compiling and running the test client
-</title>
-</head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 6: compiling and running the test client</title>
+ </head>
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 6: compiling and
running the
-test client </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss5.html >
- BACK: Step 5: coding the test client </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html > contents </a></p>
- </td>
- <td> <a href=jboss7.html >
- FORWARD: Step 7: compiling the test client as a servlet </a> </td>
- </tr>
-</table>
-<p> We're now ready to run the test client, but first a word of explanation. <br>
- In reality the client and the server are
- likely to be on different computers. When you <i>compile</i> the client, the
- compiler needs to know about the organization and methods of classes in the
- Bean so it can do type checking. When you <i>run</i> the client, the run-time
- engine needs to know about the Bean classes, because type-casting is done at
- run-time. So when the client attempts to cast the remote reference to a reference
- to an object of class <code>InterestHome</code> for example, it needs to know
- about this class. This means that <i>you will need the Bean class files on both
- the client and the server</i> even though they execute on the server. This is
- fairly obvious if you think about the logic, but it causes all sorts of problems
- for people who are new to RMI programming. If the client can't find the Bean
- classes, you will get error messages like this:
-<pre>
-javax.naming.CommunicationException [Root exception is
-java.lang.ClassNotFoundException: com.web_tomorrow.interest.InterestHome]
-</pre>
- A 'communication exception' is the exception
that represents any error that can't
-readily be ascribed to a definite cause. If you get this message you need to pay
-attention to the CLASSPATH on the client. <br>
- If the client program is at the top of the
-directory hierarchy, with the Bean classes below it, then we can run it like this:
-<pre>
-java -classpath $$CLASSPATH:\
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 6: compiling and
running the test client </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss5.html">BACK: Step 5: coding the
test client </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td><a href="jboss7.html">FORWARD: Step 7: compiling the test
client as a servlet </a></td>
+ </tr>
+ </table>
+ <p>We're now ready to run the test client, but first a word of explanation.<br>
+ In reality the client and the server are
likely to be on different computers. When you <i>compile</i> the client, the compiler
needs to know about the organization and methods of classes in the Bean so it can do
type checking. When you <i>run</i> the client, the run-time engine needs to know about
the Bean classes, because type-casting is done at run-time. So when the client
attempts to cast the remote reference to a reference to an object of class
<code>InterestHome</code> for example, it needs to know about this class. This means
that <i>you will need the Bean class files on both the client and the server</i> even
though they execute on the server. This is fairly obvious if you think about the
logic, but it causes all sorts of problems for people who are new to RMI programming.
If the client can't find the Bean classes, you will get error messages like this:</p>
+ <pre>javax.naming.CommunicationException [Root exception is
+java.lang.ClassNotFoundException: com.web_tomorrow.interest.InterestHome]</pre>
+ <p> A 'communication exception' is the
exception that represents any error that can't readily be ascribed to a definite
cause. If you get this message you need to pay attention to the CLASSPATH on the
client. NOTE that the server doesn't need to have the classpath set, you just
need to put it in the deploy directory and the server will generate a ClassLoader for
it.<br>
+ <p> If the client program is at the top of
the directory hierarchy, with the Bean classes below it, then we can run it like
this:</p>
+ <pre>java -classpath $$CLASSPATH:\
/usr/local/jboss/lib/ext/ejb.jar:/usr/local/jboss/client/jboss-client.jar \
-InterestClient
-</pre>
- Once again, this needs to go in a shell
script or a Makefile; you won't want to
-type it more than once. <br>
- Note the long CLASSPATH; it needs to include
-the jBoss client classes and the EJB classes as well as the standard classpath
-(if any). <br>
- If all is well, the test client produces
-the following output:
-<TABLE BORDER=0 BGCOLOR="#FFFF80" CELLSPACING=4><TR><TD><pre>
-Got context
+InterestClient </pre>
+ <p> Once again, this needs to go in a
shell script or a Makefile; you won't want to type it more than once.<br>
+ Note the long CLASSPATH; it needs to
include the jBoss client classes and the EJB classes as well as the standard classpath
(if any).<br>
+ If all is well, the test client produces
the following output:
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>Got context
Got reference
Interest on 1000 units, at 10% per period, compounded over 2 periods is:
-210.00000000000023
-</pre></TD></TR></TABLE>
- If it doesn't produce this output but you
see a "MalformedURLException" try installing jboss in another directory that doesn't
contain space in it's path (typically some installations on windows don't like
C:\Program Files (the space).
-<br>
- Another common problem you can see here is a
"class not found exception" make sure you include all the jars.
-<br>
- The Bean should produce an output on the
server as well; this is to show that
-the Bean has executed on the server, not the client. Look for something like this
-in the server log:
-<TABLE BORDER=0 BGCOLOR="#FFFF80" CELLSPACING=4><TR><TD><pre>
-[Interest] Someone called `calculateCompoundInterest!'
-</pre></pre></TD></TR></TABLE>
- Well, that's it. We covered coding,
compiling and deploying the Bean, and coding
-and running a simple test client. If you found this article useful, drop me a
-line at <a
-href=mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED]</a>; if there's
-enough response I may be persuaded to produce some more sophisticated tutorials.
-<p> Kevin Boone, June 2000
-<p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss5.html >
- BACK: Step 5: coding the test client </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html > contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss7.html >
- FORWARD: Step 7: compiling the test client as a servlet</a></p>
- </td>
- </tr>
-</table>
+210.00000000000023</pre>
+ </td>
+ </tr>
+ </table>
+ If it doesn't produce this output but you
see a "MalformedURLException" try installing jboss in another directory that
doesn't contain space in it's path (typically some installations on windows don't like
C:\Program Files (the space).<br>
+ Another common problem you can see here
is a "class not found exception" make sure you include all the jars.<br>
+ The Bean should produce an output on the
server as well; this is to show that the Bean has executed on the server, not the
client. Look for something like this in the server log:
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>[Interest] Someone called
`calculateCompoundInterest!'</pre>
+ <p></pre></td>
+ </tr>
+ </table>
+ Well, that's it. We covered coding,
compiling and deploying the Bean, and coding and running a simple test client. If you
found this article useful, drop me a line at <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>; if there's enough
response I may be persuaded to produce some more sophisticated tutorials.
+ <p>Kevin Boone, June 2000</p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss5.html">BACK: Step 5: coding the
test client </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss7.html">FORWARD: Step 7:
compiling the test client as a servlet</a></center>
+ </td>
+ </tr>
+ </table>
+ </body>
-</body>
</html>
1.2 +107 -112 jbossweb/jboss5.html
Index: jboss5.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss5.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss5.html 2000/08/29 23:12:02 1.1
+++ jboss5.html 2000/09/01 23:53:46 1.2
@@ -1,47 +1,40 @@
<html>
-<head>
-<title>
-Step 5: coding the test client
-</title>
-
-
-</head>
-
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 5: coding the test
client </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss4.html >
- BACK: Step 4: packaging and deploying the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss6.html >
- FORWARD: Step 6: compiling and running the test client </a></p>
- </td>
- </tr>
-</table>
-<p> An EJB on its own is no use; we will need at least a simple client to use
- its services. A user of EJBs may be another EJB, and ordinary JavaBean, a JSP
- page, an applet, or a stand-alone application. In this example, for simplicity,
- we will code a simple application. This application will create an object of
- class Interest, and execute its one method. <br>
- I should point out straight away that the
- test client I will present below does not illustrate how you should code this
- sort of thing in practice; I've done it this way to show exactly what's going
- on. In reality, you will probably want to separate out the RMI-specific stuff
- into a separate class to divide the important functionality from the technical
- details. This class is sometimes called a `stub'. Some EJB products will generate
- stubs automatically. jBoss doesn't do this, so you'll have to code the stubs
- yourself (it isn't difficult). <br>
- Here is the test client:
-<p> <b>Test client: InterestClient.java</b> <br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-import javax.naming.*;
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 5: coding the test client</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 5: coding the test
client </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss4.html">BACK: Step 4: packaging
and deploying the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss6.html">FORWARD: Step 6:
compiling and running the test client </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>An EJB on its own is no use; we will need at least a simple client to use
its services. A user of EJBs may be another EJB, and ordinary JavaBean, a JSP page, an
applet, or a stand-alone application. In this example, for simplicity, we will code a
simple application. This application will create an object of class Interest, and
execute its one method.<br>
+ </p>
+ <p>Upon "deployment" of the bean as we have seen in the previous
step, the server has generated all the stubs and skeletons needed for the distributed
calls. What we are going to cover here is the way you lookup a reference in
JNDI from a client and invoke it. It is pretty straightforward.</p>
+ <p> Here is the test client:</p>
+ <p><b>Test client: InterestClient.java</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>import javax.naming.*;
import com.web_tomorrow.interest.*;
import java.util.Hashtable;
import javax.rmi.PortableRemoteObject;
@@ -52,6 +45,8 @@
implemented in the package `com.web_tomorrow.interest'. For this to work, the
Bean must be deployed on an EJB server.
<p>
+</p>
+
<b>IMPORTANT</b> If you want to test this in a real client-server
configuration, this class goes on the client; the URL of the naming provider
specifed in the class must be changed from `localhost:1099' to the URL of the
@@ -67,10 +62,10 @@
public static void main(String[] args) {
// Set up the naming provider; this may not always be necessary, depending
// on how your Java system is configured.
- System.setProperty("java.naming.factory.initial",
- "org.jnp.interfaces.NamingContextFactory");
- System.setProperty("java.naming.provider.url",
- "localhost:1099");
+ System.setProperty("java.naming.factory.initial",
+ "org.jnp.interfaces.NamingContextFactory");
+ System.setProperty("java.naming.provider.url",
+ "localhost:1099");
// Enclosing the whole process in a single `try' block is not an ideal way
// to do exception handling, but I don't want to clutter the program up
@@ -78,11 +73,15 @@
try {
// Get a naming context
InitialContext jndiContext = new InitialContext();
- System.out.println("Got context");
+ System.out.println("Got context");
// Get a reference to the Interest Bean
- Object ref = jndiContext.lookup("interest/Interest");
- System.out.println("Got reference");
+ // This is in the case you use the jboss.xml to override the JNDI name
+ Object ref = jndiContext.lookup("interest/Interest");
+ // If you didn't use the jboss.xml the following will work
+ // Object ref = jndiContext.lookup("Interest");
+
+ System.out.println("Got reference");
// Get a reference from this to the Bean's Home interface
InterestHome home = (InterestHome)
@@ -93,72 +92,68 @@
// call the calculateCompoundInterest() method to do the calculation
System.out.println
- ("Interest on 1000 units, at 10% per period, compounded over 2 periods
is:");
+ ("Interest on 1000 units, at 10% per period, compounded over 2 periods
is:");
System.out.println (interest.calculateCompoundInterest (1000, 0.10, 2));
} catch(Exception e) {
System.out.println(e.toString());
}
}
-}
-</PRE></TD></TR></TABLE>
-<hr>
-<p> It's important to understand that in reality this client will be running on
- a different computer to the Bean server. For testing you will probably run them
- on the same computer, but it will still be using a network connection. So the
- first part of the program indicates how to find the server.
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
- System.setProperty("java.naming.factory.initial",
- "org.jnp.interfaces.NamingContextFactory");
- System.setProperty("java.naming.provider.url",
- "localhost:1099");
-</PRE></TD></TR></TABLE>
-There are several other ways to do this, which you may see described in other
-articles. In this case, the server is on the same machine as the client
(`localhost')
-and the default naming port is `1099' for jBoss (other servers may use different
-port numbers). If you run the client and the server on different machines, you
-will need to change these settings. <br>
- The comments in the program should describe
-how it works; one point that requires mention is that the recommended way to get
-a reference to the home interface on the server is like this:
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-InterestHome home = (InterestHome)
- PortableRemoteObject.narrow (ref, InterestHome.class);
-</PRE></TD></TR></TABLE>
-which ensures compatibility with different RMI servers (e.g., CORBA). `narrow'
-ensures that the object returned in `ref' really can be converted to an object
-of class `InterestHome'. <br>
- The test client doesn't need to be in the
-same package as the EJB classes, and in practice it probably won't be. So it needs
-to import the EJB classes using their fully-qualified class name, like this:
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-import com.web_tomorrow.interest.*;
-</PRE></TD></TR></TABLE>
-You will also need to pay attention to the CLASSPATH when compiling. Even though
-the EJB classes will <i>run</i> on the server, they need to be identified to the
-client so that the compiler can do the appropriate type checking. In the example
-program I have put the client at the top level of the directory hierachy, so if
-the CLASSPATH includes the current directory it will correctly find the EJB classes
-which are in the directories beneath it.
-<pre>
-javac -classpath usr/lib/jboss/lib/ext/ejb.jar:. InterestClient.java
-</pre>
-This generates InterestClient.class in the current directory.
-<p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss4.html >
- BACK: Step 4: packaging and deploying the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss6.html >
- FORWARD: Step 6: compiling and running the test client </a></p>
- </td>
- </tr>
-</table>
+}</pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ </p>
+ <p>It's important to understand that in reality this client will be running on
a different computer to the Bean server. For testing you will probably run them on the
same computer, but it will still be using a network connection. So the first part of
the program indicates how to find the server.
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>
System.setProperty("java.naming.factory.initial",
+ "org.jnp.interfaces.NamingContextFactory");
+ System.setProperty("java.naming.provider.url",
+ "localhost:1099");</pre>
+ </td>
+ </tr>
+ </table>
+ There are several other ways to do this, which you may see described in other
articles. In this case, the server is on the same machine as the client (`localhost')
and the default naming port is `1099' for jBoss (other servers may use different port
numbers). If you run the client and the server on different machines, you will need to
change these settings.<br>
+ The comments in the program should
describe how it works; one point that requires mention is that the recommended way to
get a reference to the home interface on the server is like this:
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>InterestHome home = (InterestHome)
+ PortableRemoteObject.narrow (ref, InterestHome.class);</pre>
+ </td>
+ </tr>
+ </table>
+ which ensures compatibility with different RMI servers (e.g., CORBA). `narrow'
ensures that the object returned in `ref' really can be converted to an object of
class `InterestHome'.<br>
+ The test client doesn't need to be in the
same package as the EJB classes, and in practice it probably won't be. So it needs to
import the EJB classes using their fully-qualified class name, like this:
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>import com.web_tomorrow.interest.*;</pre>
+ </td>
+ </tr>
+ </table>
+ You will also need to pay attention to the CLASSPATH when compiling. Even
though the EJB classes will <i>run</i> on the server, they need to be identified to
the client so that the compiler can do the appropriate type checking. In the example
program I have put the client at the top level of the directory hierachy, so if the
CLASSPATH includes the current directory it will correctly find the EJB classes which
are in the directories beneath it.</p>
+ <pre>javac -classpath usr/lib/jboss/lib/ext/ejb.jar:. InterestClient.java</pre>
+ <p>This generates InterestClient.class in the current directory.
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss4.html">BACK: Step 4: packaging
and deploying the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss6.html">FORWARD: Step 6:
compiling and running the test client </a></center>
+ </td>
+ </tr>
+ </table>
+ </body>
-</body>
</html>
1.2 +73 -88 jbossweb/jboss4.html
Index: jboss4.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss4.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss4.html 2000/08/29 23:12:01 1.1
+++ jboss4.html 2000/09/01 23:53:46 1.2
@@ -1,106 +1,91 @@
<html>
-<head>
-<title>
-Step 4: packaging and deploying the Bean
-</title>
-</head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 4: packaging and deploying the Bean</title>
+ </head>
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 4: packaging and
deploying
-the Bean </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss3.html >
- BACK: Step 3: the deployment descriptor </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html > contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss5.html>
- FORWARD: Step 5: coding the test client </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> Creation of the Bean package involves building a JAR archive containing the
- classes and the XML files. For the example Bean we have been discussing, this
- is straightforward; at the top of the directory hierarchy run <code>jar</code>
- like this:
-<PRE>
-jar cvf interest.jar com/web_tomorrow/interest/Interest.class \
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 4: packaging and
deploying the Bean </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss3.html">BACK: Step 3: the
deployment descriptor </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss5.html">FORWARD: Step 5: coding
the test client </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Creation of the Bean package involves building a JAR archive containing the
classes and the XML files. For the example Bean we have been discussing, this is
straightforward; at the top of the directory hierarchy run <code>jar</code> like
this:</p>
+ <pre>jar cvf interest.jar com/web_tomorrow/interest/Interest.class \
com/web_tomorrow/interest/InterestHome.class \
com/web_tomorrow/interest/InterestBean.class \
-META-INF
-</PRE>
-If you have `make' on your system, and you have unpacked the source code arhive,
-you can get the same effect simply by executing `make package'. I strongly
recommend
-using Makefiles or shell scripts to do these operations because in practice you
-will be repeating them many times during development <br>
- <code>jar</code> builds an archive containing
-the three classes, and the XML files in the META-INF directory. If you list the
-contents of the archive you should see something like this:
-<pre>
- 0 06-16-00 11:34 META-INF/
+META-INF</pre>
+ <p>If you have `make' on your system, and you have unpacked the source code
arhive, you can get the same effect simply by executing `make package'. I strongly
recommend using Makefiles or shell scripts to do these operations because in practice
you will be repeating them many times during development<br>
+ <code>jar</code> builds an archive
containing the three classes, and the XML files in the META-INF directory. If you list
the contents of the archive you should see something like this:
+ <pre> 0 06-16-00 11:34 META-INF/
72 06-16-00 11:35 META-INF/MANIFEST.MF
248 06-16-00 10:12 com/web_tomorrow/interest/Interest.class
300 06-16-00 10:12 com/web_tomorrow/interest/InterestHome.class
877 06-16-00 10:12 com/web_tomorrow/interest/InterestBean.class
549 06-15-00 18:15 META-INF/ejb-jar.xml
- 3597 06-15-00 17:20 META-INF/jboss.xml
-</pre>
-Note that the directory structure must be <i>exactly</i> like this, or it won't
-work. <br>
- To deploy the Bean on the server, all that's
-necessary is to copy the .jar file to the `deploy' directory on the server, e.g.,
-<pre>
-cp interest.jar /usr/local/jboss/deploy
-</pre>
-You can do this as often as you like; the server will detect that the file has
-changed and automatically re-deploy it. During deployment you should see the
following
-messages from the server:
-<TABLE BORDER=0 BGCOLOR="#FFFF80" CELLSPACING=4><TR><TD><PRE>
-[Auto deploy] Auto deploy of file:/usr/local/jboss/deploy/interest.jar
+ 3597 06-15-00 17:20 META-INF/jboss.xml</pre>
+ <p>Note that the directory structure must be <i>exactly</i> like this, or it
won't work. Again a common mistake is to do a META_INF (underscore) instead of
META-INF, be careful with this one<br>
+ To deploy the Bean on the server, all
that's necessary is to copy the .jar file to the `deploy' directory on the server,
e.g.,
+ <pre>cp interest.jar /usr/local/jboss/deploy</pre>
+ <p>You can do this as often as you like; the server will detect that the file
has changed and automatically re-deploy it. During deployment you should see the
following messages from the server:
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>[Auto deploy] Auto deploy of
file:/usr/local/jboss/deploy/interest.jar
[Container factory] Deploying:file:/usr/local/jboss/deploy/interest.jar
[Container factory] Deploying Interest
[Container factory] Started: Interest
[Container factory] Bound Interest to interest/Interest
[Container factory] Deployed application:
-file:/usr/local/jboss/deploy/interest.jar
-</PRE></TD></TR></TABLE>
-If you see a message like this:
-<TABLE BORDER=0 BGCOLOR="#FFFF80" CELLSPACING=4><TR><TD><PRE>
-[Container factory] Deploying:file:/usr/local/jboss/deploy/interest.jar
+file:/usr/local/jboss/deploy/interest.jar</pre>
+ </td>
+ </tr>
+ </table>
+ If you see a message like this:
+ <table border="0" bgcolor="#ffff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>[Container factory]
Deploying:file:/usr/local/jboss/deploy/interest.jar
[Container factory] Deployed application:
-file:/usr/local/jboss/deploy/interest.jar
-</PRE></TD></TR></TABLE>
-then no Beans have been deployed -- the server always reports the Beans that it
-detects. This usually means that the deployment descriptor <code>ejb-jar.xml</code>
-is badly structured, or missing, or in the wrong directory. Note that you
<i>can</i>
-deploy without a <code>jboss.xml</code> file; the server will use defaults for
-all its settings. In simple cases you may get away with this. <br>
- If everything has gone according to plan,
-you should now have a Bean deployed on the server. We will now create a simple
-test client that runs one of its methods, just to prove that it's working.
-<p> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss3.html >
- BACK: Step 3: the deployment descriptor </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html > contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss5.html>
- FORWARD: Step 5: coding the test client </a></p>
- </td>
- </tr>
-</table>
+file:/usr/local/jboss/deploy/interest.jar</pre>
+ </td>
+ </tr>
+ </table>
+ then no Beans have been deployed -- the server always reports the Beans that
it detects. This usually means that the deployment descriptor <code>ejb-jar.xml</code>
is badly structured, or missing, or in the wrong directory. Note that the server
doesn't need to have the CLASSPATH set with your classes it is done automatically
from the deploy directory.<br>
+ If everything has gone according to plan,
you should now have a Bean deployed on the server. We will now create a simple test
client that runs one of its methods, just to prove that it's working.
+ <p> </p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss3.html">BACK: Step 3: the
deployment descriptor </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss5.html">FORWARD: Step 5: coding
the test client </a></center>
+ </td>
+ </tr>
+ </table>
+ </body>
-</body>
</html>
1.2 +91 -174 jbossweb/jboss3.html
Index: jboss3.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss3.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss3.html 2000/08/29 23:12:01 1.1
+++ jboss3.html 2000/09/01 23:53:46 1.2
@@ -1,46 +1,38 @@
<html>
-<head>
-<title>
-Step 3: the deployment descriptor
-</title>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 3: the deployment descriptor</title>
+ </head>
-</head>
-
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 3: the deployment
descriptor
- </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font>
-</p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss2.html>
- BACK: Step 2: creating the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss4.html>
- FORWARD: Step 4: packaging and deploying the Bean </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> Now it's time to create
-the deployment descriptor. As a reminder, this file
- tells the EJB server which classes form the Bean, the home interface and the
- remote interface. If there is more than one Bean in the package, it indicates
- also how the Beans interact with one another. In this simple example, there
- is only one Bean so we won't need to worry about that part. <br>
- Most commercial EJB servers are supplied
- with graphical tools for constructing the deployment descriptor. jBoss does
- have an XML editor, but it's just as easy to construct the deployment descriptor
- manually. Here it is:
-<p> <b>ejb-jar.xml: deployment descriptor for the Interest Bean</b><br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-<?xml version="1.0" encoding="Cp1252"?>
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 3: the deployment
descriptor </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming
using jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss2.html">BACK: Step 2: creating
the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss4.html">FORWARD: Step 4:
packaging and deploying the Bean </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Now it's time to create the deployment descriptor. As a reminder, this file
tells the EJB server which classes form the Bean, the home interface and the remote
interface. If there is more than one Bean in the package, it indicates also how the
Beans interact with one another. In this simple example, there is only one Bean so we
won't need to worry about that part.<br>
+ Most commercial EJB servers are supplied
with graphical tools for constructing the deployment descriptor. jBoss does have an
XML editor, but it's just as easy to construct the deployment descriptor manually.
Here it is:</p>
+ <p><b>ejb-jar.xml: deployment descriptor for the Interest Bean</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre><?xml version="1.0"
encoding="Cp1252"?>
<ejb-jar>
<description>jBoss test application</description>
<display-name>Test</display-name>
@@ -54,145 +46,70 @@
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
- </ejb-jar>
-</PRE></TD></TR></TABLE>
-<hr>
-The deployment descriptor must be called <code>ejb-jar.xml</code> and it must
-be in the directory <code>./META-INF</code>. A common mistake is to name this
-directory `META_INF' (with an underscore, rather than a dash), which won't work.
-<br>
- In principle what we deploy on the server
-is an application, not a Bean. In this example our application consists of exactly
-one Bean, so it comes to the same thing. In the deployment descriptor, the section
-<pre>
-<ejb-name>Interest</ejb-name>
-</pre>
-assigns a name to the Bean; in practice client applications won't use this name,
-they will use the Bean's JNDI name, which is assigned in a different file. The
-JNDI name will often be in the form `[application name]/[bean name]', which is
-what we shall use later. <br>
- Although the deployment
-descriptor format
-
-is common to all EJB servers, it doesn't provide all the information that the
-server needs to deploy the bean. Specifically it does not know how to map package
-names to JNDI names. The server may also need to be told how to manage persistence
-and state. There is, as yet, no standard way of specifying these things, and every
-server implementation does it differently. There isn't even a standard <i>name</i>
-for this procedure. The approach taken by jBoss is that the Bean package should
-provide an additional XML file, called <code>jboss.xml</code> in the same directory
-as the deployment descriptor. The format of <code>jboss.xml</code> is largely
-undocumented, but it's straightforward. The first part of the file lists the Beans
-and their JNDI names, and refers to configuration sections in the second part
-of the file. It should only be necessary to edit the first part. In the listings
-below I have divided the <code>jboss.xml</code> file into two parts to make the
-distinction clear; of course you need both these parts in the same file in
practice.
-<p> <b>jboss.xml: first part (this bit provided by the Bean developer)</b><br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-<jboss>
+ </ejb-jar></pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ The deployment descriptor must be called <code>ejb-jar.xml</code> and it must
be in the directory <code>./META-INF</code>. A common mistake is to name this
directory `META_INF' (with an underscore, rather than a dash), which won't work.<br>
+ In principle what we deploy on the server
is an application, not a Bean. In this example our application consists of exactly one
Bean, so it comes to the same thing. In the deployment descriptor, the section</p>
+ <pre><ejb-name>Interest</ejb-name></pre>
+ <p>assigns a name to the Bean. jboss in its standard configuration will put
the bean's home interface under the ejb-name moniker if you don't specify anything
else. In other words, when your applications want to access the bean through it's
home jboss will put it in JNDI under the ejb-name.
+ <p>In practice client applications are not forced to use this name. Typically
a developer will not bother with specifying a different name for the
JNDI namespace. However a production installation of a complete application
comprising many beans, will usually use a different name than the one specified by the
developer. Typically it could use `[application name]/[bean name]', which is what we
shall use later.<br>
+ </p>
+ <p> Although the deployment descriptor
format of the ejb-jar.xml file is common to all EJB servers, and precisely defined in
a DTD you can get from SUN, it doesn't specify some advanced stuff. Specifically it
does not know how to map ejb-name to a deployment JNDI such as the one we just
talked about. It also doesn't know how to map resources. The server may also need to
be told how to manage persistence and state. There is, as yet, no standard way of
specifying these things, and every server implementation does it differently. </p>
+ <p>The approach taken by jBoss is it provides a standard behaviour that works
mostly from the ejb-jar.xml file. There is no need for additional information in most
cases. In case of advanced configurations we define the jboss.xml file that gives all
the relevant information to the container, such as JNDI mapping names, persistence
information, database mapping and advanced container configuration (interceptors and
plugins), please refer to the chapter on jboss.xml for detailed information of what it
can do, we will cover simple things here. <br>
+ </p>
+ <p>The standard behaviour of jboss is capable of working from ejb-jar.xml in
95% of cases and needs jboss.xml only if you need to specify specific deployment
information. </p>
+ <p>An additional feature of the new metadata is that it works
"differentially". In clear what this means is that if you wish to override
the name of a bean you need to only specify that part of xml tags in the jboss.xml
file.</p>
+ <p></p>
+ <p><b>Using the ejb-name from ejb-jar.xml</b></p>
+ <p>for most development purposes, as soon as you provide a ejb-jar.xml with
the beans the container will get the ejb-name as the JNDI name as standard
behaviour. This makes your development life easier.</p>
+ <p>If you don't provide a jboss.xml file you will find your bean under the
name "Interest".</p>
+ <p><b>Overriding ejb-name with a real JNDI name in jboss.xml</b></p>
+ <p>If in deployment you would rather use the "myApp/myBean" naming
pattern you need to provide the following text in jboss.xml. </p>
+ <p><b>jboss.xml: (Optional, this bit provided by the Bean deployer)</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre><jboss>
<enterprise-beans>
<session>
<ejb-name>Interest</ejb-name>
<jndi-name>interest/Interest</jndi-name>
- <configuration-name>Default Stateless
SessionBean</configuration-name>
</session>
<secure>false</secure>
- </enterprise-beans>
-</PRE></TD></TR></TABLE>
-<hr>
-<p> All this file says is that the Bean called <code>Interest</code> is assigned
- the JNDI name of <code>interest/Interest</code> and has the server configuration
- <code>Default Stateless SessionBean</code>. This configuration refers to a
section
- in the second part of the file. I don't know in detail what this section does,
- and I don't particularly want to! Here it is, anyway:
-<p> <b>jboss.xml: second part (this bit should not need to be edited)</b><br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
- <resource-managers />
- <container-configurations>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.EntityContainerConfiguration">
- <container-name>BMP EntityBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.EntityInstancePool</instance-pool>
-
<instance-cache>org.jboss.ejb.plugins.NoPassivationEntityInstanceCache</instance-cache>
-
<persistence-manager>org.jboss.ejb.plugins.BMPPersistenceManager</persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- <container-cache-conf />
- <container-pool-conf>
- <MaximumSize>100</MaximumSize>
- <MinimumSize>10</MinimumSize>
- </container-pool-conf>
- </container-configuration>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.StatelessSessionContainerConfiguration">
- <container-name>Singleton Stateless SessionBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.SingletonStatelessSessionInstancePool</instance-pool>
- <instance-cache></instance-cache>
- <persistence-manager></persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- </container-configuration>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.EntityContainerConfiguration">
- <container-name>CMP EntityBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.EntityInstancePool</instance-pool>
-
<instance-cache>org.jboss.ejb.plugins.NoPassivationEntityInstanceCache</instance-cache>
-
<persistence-manager>org.jboss.ejb.plugins.jaws.JAWSPersistenceManager</persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- <container-cache-conf />
- <container-pool-conf>
- <MaximumSize>100</MaximumSize>
- <MinimumSize>10</MinimumSize>
- </container-pool-conf>
- </container-configuration>
- <container-configuration
configuration-class="org.jboss.ejb.deployment.StatelessSessionContainerConfiguration">
- <container-name>Default Stateless SessionBean</container-name>
-
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
-
<instance-pool>org.jboss.ejb.plugins.StatelessSessionInstancePool</instance-pool>
- <instance-cache></instance-cache>
- <persistence-manager></persistence-manager>
- <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
- <container-invoker-conf>
- <Optimized>False</Optimized>
- </container-invoker-conf>
- <container-pool-conf>
- <MaximumSize>100</MaximumSize>
- <MinimumSize>10</MinimumSize>
- </container-pool-conf>
- </container-configuration>
- </container-configurations>
- </jboss>
-</PRE></TD></TR></TABLE>
-<hr>
-<p> <br>
- So now we've got the deployment descriptor
- <code>ejb-jar.xml</code>, the run-time configuration file <code>jboss.xml</code>
- and the classes. It's time to package them together.
-<p> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss2.html>
- BACK: Step 2: creating the Bean </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss4.html>
- FORWARD: Step 4: packaging and deploying the Bean </a></p>
- </td>
- </tr>
-</table>
+ </enterprise-beans></pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ </p>
+ <p>All this file says is that the Bean called <code>Interest</code> is
assigned the JNDI name of <code>interest/Interest</code>.</p>
+ <p>The indentation is just there for formatting and readability, it is non
important.
+ <hr>
+ </p>
+ <p><br>
+ So now we've got the deployment
descriptor <code>ejb-jar.xml</code>. Again jboss will happily run just from that file
and bind the object under "Interest" as standard JNDI name. We also
have the optional jboss.xml to provide another name "interest/Interest" to
overwrite the standard behaviour with JNDI. We also have the classes. It's time to
package them together.</p>
+ <p> </p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss2.html">BACK: Step 2: creating
the Bean </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss4.html">FORWARD: Step 4:
packaging and deploying the Bean </a></center>
+ </td>
+ </tr>
+ </table>
+ </body>
-</body>
</html>
1.2 +113 -156 jbossweb/jboss2.html
Index: jboss2.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss2.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss2.html 2000/08/29 23:12:00 1.1
+++ jboss2.html 2000/09/01 23:53:46 1.2
@@ -1,91 +1,57 @@
<html>
-<head>
-<title>
-Step 2: creating the Bean
-</title>
-</head>
-
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 2: creating the Bean
- </font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font>
-</p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss1.html>
- BACK: Step 1: installing jBoss </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss3.html>
- FORWARD: Step 3: the deployment descriptor </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> In this step we will write and compile a simple Enterprise JavaBean. You can
- <a href=/interestEJB.tar.gz>download the source code</a>
<code>interestEJB.tar.gz</code>
- for this example; you will need to unpack it into an empty directory.
-<pre>
-cd /usr/local/jboss
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 2: creating the Bean</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 2: creating the
Bean </font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming
using jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss1.html">BACK: Step 1: installing
jBoss </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss3.html">FORWARD: Step 3: the
deployment descriptor </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>In this step we will write and compile a simple Enterprise JavaBean. You
can <a href="/interestEJB.tar.gz">download the source code</a>
<code>interestEJB.tar.gz</code> for this example; you will need to unpack it into an
empty directory.</p>
+ <pre>cd /usr/local/jboss
mkdir examples
cd examples
-lynx -source http://jboss.org/interestEJB.tar.gz > interestEJB.tar.gz
+lynx -source http://jboss.org/interestEJB.tar.gz > interestEJB.tar.gz
gunzip interestEJB.tar.gz
tar xf interestEJB.tar
-rm -rf interestEJB.tar
-</pre>
- The example
- -- which is called `Interest' -- is about as simple as an EJB can get: it is
- a `stateless session bean'. Its job is to calculate the amount of compound
interest
- payable on a sum of money borrowed over a specified term with a specified
interest
- rate. In fact, there is only one functional line of code in the whole package.
- <br>
- If you want to compile the classes yourself,
- you'll need to create a directory hierarchy that reflects the structure of the
- pacakage. The package in this example is <code>com.web_tomorrow.interest</code>
- so you'll need to create the directory structure:
-<pre>
-com
+rm -rf interestEJB.tar</pre>
+ <p> The example -- which is called
`Interest' -- is about as simple as an EJB can get: it is a `stateless session bean'.
Its job is to calculate the amount of compound interest payable on a sum of money
borrowed over a specified term with a specified interest rate. In fact, there is only
one functional line of code in the whole package.<br>
+ If you want to compile the classes
yourself, you'll need to create a directory hierarchy that reflects the structure of
the pacakage. The package in this example is <code>com.web_tomorrow.interest</code> so
you'll need to create the directory structure:
+ <pre>com
web_tomorrow
interest
- {java source and class files here}
-</pre>
- If you unpack the archive
<code>interestEJB.tar.gz</code> it will create this
-structure automatically.
-<p> <font face=helvetica,arial size=+2>EJBs: review</font>
-<p> As a reminder, and Enterprise JavaBean has a minimum of three classes.
-<ul>
- <li>The remote interface. This is the class that exposes the methods of the
- Bean to the outside world. In the example, the remote interface is the class
- <code>com.web_tomorrow.interest.Interest</code>
- <li>The Bean class. This implements the methods specified by the remote
interface.
- In this example, the Bean class is
<code>com.web_tomorrow.interest.InterestBean</code>
- <li>The home interface. This specifies how a new Bean is created, managed and
- deleted. As a minimum it should specify at least one <code>create()</code>
- method. There should be an <code>ejbCreate()</code> method in the Bean class
- for each <code>create()</code> method in the home interface. In this example,
- the home interface is <code>com.web_tomorrow.InterestHome</code>
-</ul>
- Of course, a Bean can include other classes,
or even other packages, but the classes
-listed above are the minimum. The classes must be packaged into a JAR archive
-with a directory structure that reflects the hierarchy of packages. In the example,
-the classes are in the package <code>com.web_tomorrow.interest</code>, so they
-need to be in the directory
-<pre>
-./com/web_tomorrow/interest/
-</pre>
-where the `.' represents the current working directory, wherever that is. You
-will also need a directory called <code>META-INF</code> to store the deployment
-descriptor (always called <code>ejb-jar.xml</code>) and -- optionally -- another
-XML file to tell the server about name mappings. With jBoss, this file must be
-called <code>jboss.xml</code>. <br>
- So before writing the classes, we need a
-directory structure like this:
-<pre>
-
+ {java source and class files here}</pre>
+ <p> If you unpack the archive
<code>interestEJB.tar.gz</code> it will create this structure automatically.
+ <p><font face="helvetica,arial" size="5">EJBs: review</font></p>
+ <p>As a reminder, and Enterprise JavaBean has a minimum of three classes.</p>
+ <ul>
+ <li>The remote interface. This is the class that exposes the methods
of the Bean to the outside world. In the example, the remote interface is the class
<code>com.web_tomorrow.interest.Interest</code>
+ <li>The Bean class. This implements the methods specified by the
remote interface. In this example, the Bean class is
<code>com.web_tomorrow.interest.InterestBean</code>
+ <li>The home interface. This specifies how a new Bean is created,
managed and deleted. As a minimum it should specify at least one <code>create()</code>
method. There should be an <code>ejbCreate()</code> method in the Bean class for each
<code>create()</code> method in the home interface. In this example, the home
interface is <code>com.web_tomorrow.InterestHome</code>
+ </ul>
+ <p> Of course, a Bean can include other
classes, or even other packages, but the classes listed above are the minimum. The
classes must be packaged into a JAR archive with a directory structure that reflects
the hierarchy of packages. In the example, the classes are in the package
<code>com.web_tomorrow.interest</code>, so they need to be in the directory
+ <pre>./com/web_tomorrow/interest/</pre>
+ <p>where the `.' represents the current working directory, wherever that is.
You will also need a directory called <code>META-INF</code> to store the deployment
descriptor (always called <code>ejb-jar.xml</code>) and -- optionally -- another XML
file to tell the server about name mappings. With jBoss, this file must be called
<code>jboss.xml</code>.<br>
+ So before writing the classes, we need a
directory structure like this:
+ <pre>
com
web_tomorrow
interest
@@ -93,25 +59,19 @@
META-INF
ejb-jar.xml
- jboss.xml
-
+ jboss.xml (optional)
</pre>
- If the <code>jar</code> utility is run at the
top level of this directory structure,
-it will put the files in the right ordering in the archive. We will discuss the
-creation of the XML files later. <br>
- Of course, in your own work you will create
-a directory hierarchy that reflect the package hierarchy you need, rather than
-`com.web_tomorrow.XXXX'
-<p> <font face=helvetica,arial size=+2>Coding the classes</font>
-<p> We need three classes: the remote interface, the Bean, and the home interface.
- All the .java files will go in the subdirectory
<code>./com/web_tomorrow/interest</code>
- <br>
- The remote interface in this example is
- very simple.
-<p> <b>Interest.java: remote interface for the `interest' EJB</b> <br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-package com.web_tomorrow.interest;
+ <p> If the <code>jar</code> utility is run
at the top level of this directory structure, it will put the files in the right
ordering in the archive. We will discuss the creation of the XML files later.<br>
+ Of course, in your own work you will
create a directory hierarchy that reflect the package hierarchy you need, rather than
`com.web_tomorrow.XXXX'
+ <p><font face="helvetica,arial" size="5">Coding the classes</font></p>
+ <p>We need three classes: the remote interface, the Bean, and the home
interface. All the .java files will go in the subdirectory
<code>./com/web_tomorrow/interest</code><br>
+ The remote interface in this example is
very simple.</p>
+ <p><b>Interest.java: remote interface for the `interest' EJB</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>package com.web_tomorrow.interest;
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
@@ -132,16 +92,19 @@
*/
public double calculateCompoundInterest(double principle,
double rate, double periods) throws RemoteException;
-}
-</PRE></TD></TR></TABLE>
-<hr>
-The remote interface specifies only one `business method'
<code>calculateCompoundInterest</code>.
-<br>
- The home interface is even simpler.
-<p> <b>Interest.java: remote interface for the `interest' EJB</b> <br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-package com.web_tomorrow.interest;
+}</pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ The remote interface specifies only one `business method'
<code>calculateCompoundInterest</code>.<br>
+ The home interface is even simpler.</p>
+ <p><b>Interest.java: remote interface for the `interest' EJB</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>package com.web_tomorrow.interest;
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
@@ -159,15 +122,18 @@
Interest create()
throws RemoteException, CreateException;
}
-
-</PRE></TD></TR></TABLE>
-<hr>
-Finally, here is the Bean class. This is the only one that does any real work
-in this simple example.
-<p> <b>Interest.java: remote interface for the `interest' EJB</b> <br>
-<hr>
-<TABLE BORDER=0 BGCOLOR="#80FF80" CELLSPACING=4><TR><TD><PRE>
-package com.web_tomorrow.interest;
+</pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ Finally, here is the Bean class. This is the only one that does any real work
in this simple example.</p>
+ <p><b>Interest.java: remote interface for the `interest' EJB</b><br>
+ <hr>
+ <table border="0" bgcolor="#80ff80" cellspacing="4">
+ <tr>
+ <td>
+ <pre>package com.web_tomorrow.interest;
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
@@ -189,7 +155,7 @@
*/
public double calculateCompoundInterest(double principle,
double rate, double periods) {
- System.out.println ("Someone called `calculateCompoundInterest!'");
+ System.out.println ("Someone called `calculateCompoundInterest!'");
return principle * Math.pow(1+rate, periods) - principle;
}
@@ -217,42 +183,33 @@
Empty method body
*/
public void setSessionContext(SessionContext sc) {}
-}
-</PRE></TD></TR></TABLE>
-<hr>
-Notice that most of the methods are empty; they have to exist because they're
-specified by the SessionBean interface, but they don't need to do anything in
-this case. <br>
- If you haven't already done so, you should
-create these .java files in the directory <code>./com/web_tomorrow/interest</code>
-(or unpack the archive with them in). Then you can compile them using the command
-<pre>
-javac -classpath /usr/local/jboss/lib/ext/ejb.jar com/web_tomorrow/interest/*.java
-</pre>
-substituting the correct path to the jBoss class EJB library if you haven't
installed
-jBoss in <code>/usr/local/jboss</code>. This should create three class files:
<code>InterestBean.class</code>,
-<code>Interest.class</code>, and <code>InterestHome.class</code>. If you have
-`make' on your system, and you have unpacked the archive, you can build all the
-classes just be running <code>make</code> in the same directory as the Makefile.
-<br>
- With the classes compiled, it's time to create
-the deployment descriptor.
-<p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss1.html>
- BACK: Step 1: installing jBoss </a></p>
- </td>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss3.html>
- FORWARD: Step 3: the deployment descriptor </a></p>
- </td>
- </tr>
-</table>
+} </pre>
+ </td>
+ </tr>
+ </table>
+ <hr>
+ Notice that most of the methods are empty; they have to exist because they're
specified by the SessionBean interface, but they don't need to do anything in this
case.<br>
+ If you haven't already done so, you
should create these .java files in the directory
<code>./com/web_tomorrow/interest</code> (or unpack the archive with them in). Then
you can compile them using the command</p>
+ <pre>javac -classpath /usr/local/jboss/lib/ext/ejb.jar
com/web_tomorrow/interest/*.java</pre>
+ <p>substituting the correct path to the jBoss class EJB library if you haven't
installed jBoss in <code>/usr/local/jboss</code>. This should create three class
files: <code>InterestBean.class</code>, <code>Interest.class</code>, and
<code>InterestHome.class</code>. If you have `make' on your system, and you have
unpacked the archive, you can build all the classes just be running <code>make</code>
in the same directory as the Makefile.<br>
+ With the classes compiled, it's time to
create the deployment descriptor.
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a href="jboss1.html">BACK: Step 1: installing
jBoss </a></center>
+ </td>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss3.html">FORWARD: Step 3: the
deployment descriptor </a></center>
+ </td>
+ </tr>
+ </table>
+ </body>
-</body>
</html>
1.2 +95 -132 jbossweb/jboss1.html
Index: jboss1.html
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/jboss1.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- jboss1.html 2000/08/29 23:11:59 1.1
+++ jboss1.html 2000/09/01 23:53:46 1.2
@@ -1,146 +1,109 @@
<html>
-<head>
-<title>
-Step 1: installing jBoss
-</title>
-</head>
-
-<p><font face=arial,helvetica size=+3 color="#ffcc00"> Step 1: installing jBoss
</font> </p>
-<p> <font face=arial,helvetica size=+2>Beginning EJB programming using
jBoss</font> </p>
-
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss2.html>
- FORWARD: Step 2: creating the Bean </a></p>
- </td>
- </tr>
-</table>
-<p>
-<p> Before installing and running the server,
- you should check that your JDK installation is working.
- <A HREF="jboss1a.html">(Step-by-step instructions are available.)</A>
- You will <i>need</i>
- the JDK binaries directory in your PATH (this is essential: see below) not just
- for the user account which is doing the installation, but also for the user
- account that will run the server. If you are running the server as root, you
- should check that the JDK binaries are in the PATH even for root (root and
ordinary
- users normally have different PATH settings). You won't need to specify a
CLASSPATH
- environment variable if you don't normally have to. <br>
- The next step will be to download, install
and
- test the jBoss server. At the time of writing the most recent version of jBoss is
2.0.
- You can get jBoss from <a href=http://www.jboss.org>www.jboss.org</a> <br>
- It doesn't matter very much where you
install
- jBoss; my preference is to use <code>/usr/local/jboss</code>. If you don't have
- root access, or would rather not run untested software as root, jboss will work
- perfectly well if installed in a user directory and run as an ordinary user.
- I will assume in this tutorial that you are installing in
<code>/usr/local/jboss</code>.
- If you haven't, change the paths as appropriate. <br>
- jBoss is
- <A HREF="http://jboss.org/jBoss2/install.htm">distributed using Install
Anywhere</A>
- which isn't a natural format for Linux users. If you're running the X Window
System
- on your Linux machine and you have Netscape installed with Java enabled, this
might
- work for you. Otherwise, your best bet right now is to
- <A HREF="cvs.htm">download from CVS</A> or to install from the Zip file like this:
-<pre>
-su
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="Adobe GoLive 4">
+ <title>Step 1: installing jBoss</title>
+ </head>
+
+ <font face="arial,helvetica" size="6" color="#ffcc00">Step 1: installing jBoss
</font>
+ <p> <font face="arial,helvetica" size="5">Beginning EJB programming using
jBoss</font></p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss2.html">FORWARD: Step 2:
creating the Bean </a></center>
+ </td>
+ </tr>
+ </table>
+ <p>Before installing and running the server, you should check that your JDK
installation is working. <a href="jboss1a.html">(Step-by-step instructions are
available.)</a> You will <i>need</i> the JDK binaries directory in your PATH (this is
essential: see below) not just for the user account which is doing the installation,
but also for the user account that will run the server. If you are running the server
as root, you should check that the JDK binaries are in the PATH even for root (root
and ordinary users normally have different PATH settings). You won't need to specify a
CLASSPATH environment variable if you don't normally have to.<br>
+ The next step will be to download,
install and test the jBoss server. At the time of writing the most recent version of
jBoss is 2.0. You can get jBoss from <a
href="http://www.jboss.org">www.jboss.org</a><br>
+ It doesn't matter very much where you
install jBoss; my preference is to use <code>/usr/local/jboss</code>. If you don't
have root access, or would rather not run untested software as root, jboss will work
perfectly well if installed in a user directory and run as an ordinary user. I will
assume in this tutorial that you are installing in <code>/usr/local/jboss</code>. If
you haven't, change the paths as appropriate.<br>
+ jBoss is <a
href="http://jboss.org/jBoss2/install.htm">distributed using Install Anywhere</a>
which isn't a natural format for Linux users. If you're running the X Window System on
your Linux machine and you have Netscape installed with Java enabled, this might work
for you. Otherwise, your best bet right now is to <a href="cvs.htm">download from
CVS</a> or to install from the Zip file like this:</p>
+ <pre>su
mkdir /usr/local/jboss
cd /usr/local/jboss
lynx -source \
http://jboss.org/jBoss2/InstData/Other/install.zip \
- > install.zip
+ > install.zip
mkdir installer
cd installer
unzip ../install.zip
mv c:/jboss2/* ..
cd ..
rm -rf installer
-rm -f install.zip
-</pre>
- You could try running the server now. Change
-to the <code>bin</code> directory, and run the program like this:
-<pre>
-cd bin
-java -jar run.jar
-</pre>
- In a proper installation, the server should
start without any error messages or
-exceptions being thrown. It will produce about three pages of output on startup.
-<br>
- The jBoss distribution is supplied with one
-test Bean, packaged as <code>bank.jar</code>. This is supplied in the `deploy'
-subdirectory, which is where Beans are placed to deploy them. The effect of this
-is to deploy the `bank' bean when the server starts up. This is fine the first
-time, as it tests that the SQL server is working, but you can usefully move
<code>bank.jar</code>
-out of the <code>deploy</code> directory when you are sure that everything's OK,
-and the server will start up more quickly.
-
-<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=5 BGCOLOR="#FFFF80">
- <TR VALIGN="TOP">
- <TH>Error Message</TH>
- <TH>Corrective Action</TH>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>bash: java: command not found</TD>
- <TD>The JDK binaries aren't in the PATH. Check your PATH environment variable
and try the command<PRE># which java</PRE>See <A HREF="jboss1a.html">the section on
downloading and installing the JDK.</A></TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[hypersonic] System.run/init: database is in use by a different process</TD>
- <TD>The JDK binaries aren't in the PATH. If you get this message, the SQL
server hasn't started, and there will be a whole heap of other errors later. Check
your PATH environment variable and try the command<PRE># which java</PRE>See <A
HREF="jboss1a.html">the section on downloading and installing the JDK.</A></TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>Failed to load Main-Class manifest attribute from<BR>
- run.jar</TD>
- <TD>You're not in the right directory and Java can't find file run.jar. Try
this:<PRE># cd /usr/local/jboss/bin</PRE></TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[Webserver] java.net.UnknownHostException:...</TD>
- <TD>The jBoss server tries to establish its host's IP number when it starts up.
If it can't do this, you will see this error message. This problem is quite common on
systems that get their network configuration parameters dynamically. For example, if
your computer connects to the Internet by a dial-up connection, and you cancel the
dial-up process, you may end up with a hostname that doesn't make sense. You can
re-establish your connection or you can temporarily reset your hostname to `localhost'
like this: <PRE># hostname localhost</PRE></TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[Webserver] java.net.BindException: Address already in use</TD>
- <TD>This probably means you already have jBoss running and you're trying to
start it a second time. Use this command:<PRE># ps ax | grep run.jar</PRE>to determine
the process ID of the previous attempt to invoke jBoss then use kill -9 (pid) to kill
that PID. Restart jBoss.</TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[Container factory] No configuration chosen. Using default
configuration</TD>
- <TD>No corrective action necessary. This means that a particular EJB did not
have a jboss.xml file in its META-INF directory (which is inside the EJB's .jar file
in the deploy/ directory). This isn't a real problem; jBoss will just use its default
configuration. If you want to change the configuration, see <A
HREF="#somewhere_else">the section on jboss.xml.</A></TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[Container factory] javax.management.InstanceNotFoundException:
DefaultDomain: service=Webserver</TD>
- <TD>TBD</TD>
- </TR>
-
- <TR VALIGN="TOP">
- <TD>[JMX RMI Adaptor] Started<BR>
- java.net.BindException: Address already in use</TD>
- <TD>TBD</TD>
- </TR>
-
-</TABLE>
+rm -f install.zip</pre>
+ <p> You could try running the server now.
Change to the <code>bin</code> directory, and run the program like this:
+ <pre>cd bin
+java -jar run.jar</pre>
+ <p> In a proper installation, the server
should start without any error messages or exceptions being thrown. It will produce
about three pages of output on startup.<br>
+ The jBoss distribution is supplied with
one test Bean, packaged as <code>bank.jar</code>. This is supplied in the `deploy'
subdirectory, which is where Beans are placed to deploy them. The effect of this is to
deploy the `bank' bean when the server starts up. This is fine the first time, as it
tests that the SQL server is working, but you can usefully move <code>bank.jar</code>
out of the <code>deploy</code> directory when you are sure that everything's OK, and
the server will start up more quickly.
+ <table border="1" cellspacing="0" cellpadding="5" bgcolor="#ffff80">
+ <tr valign="top">
+ <th>Error Message</th>
+ <th>Corrective Action</th>
+ </tr>
+ <tr valign="top">
+ <td>bash: java: command not found</td>
+ <td>The JDK binaries aren't in the PATH. Check your PATH
environment variable and try the command
+ <pre># which java</pre>
+ <p>See <a href="jboss1a.html">the section on
downloading and installing the JDK.</a></td>
+ </tr>
+ <tr valign="top">
+ <td>[hypersonic] System.run/init: database is in use by a
different process</td>
+ <td>The JDK binaries aren't in the PATH. If you get this
message, the SQL server hasn't started, and there will be a whole heap of other errors
later. Check your PATH environment variable and try the command
+ <pre># which java</pre>
+ <p>See <a href="jboss1a.html">the section on
downloading and installing the JDK.</a></td>
+ </tr>
+ <tr valign="top">
+ <td>Failed to load Main-Class manifest attribute from<br>
+ run.jar</td>
+ <td>You're not in the right directory and Java can't find file
run.jar. Try this:
+ <pre># cd /usr/local/jboss/bin</pre>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>[Webserver] java.net.UnknownHostException:...</td>
+ <td>The jBoss server tries to establish its host's IP number
when it starts up. If it can't do this, you will see this error message. This problem
is quite common on systems that get their network configuration parameters
dynamically. For example, if your computer connects to the Internet by a dial-up
connection, and you cancel the dial-up process, you may end up with a hostname that
doesn't make sense. You can re-establish your connection or you can temporarily reset
your hostname to `localhost' like this:
+ <pre># hostname localhost</pre>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>[Webserver] java.net.BindException: Address already in
use</td>
+ <td>This probably means you already have jBoss running and
you're trying to start it a second time. Use this command:
+ <pre># ps ax | grep run.jar</pre>
+ <p>to determine the process ID of the previous attempt
to invoke jBoss then use kill -9 (pid) to kill that PID. Restart jBoss.</td>
+ </tr>
+ <tr valign="top">
+ <td>[Container factory]
javax.management.InstanceNotFoundException: DefaultDomain: service=Webserver</td>
+ <td>TBD</td>
+ </tr>
+ <tr valign="top">
+ <td>[JMX RMI Adaptor] Started<br>
+ java.net.BindException: Address already in use</td>
+ <td>TBD</td>
+ </tr>
+ </table>
+ When you're happy that the server is
running correctly, go on to the next step.
+ <p> </p>
+ <p>
+ <table align="CENTER" border="1" cellspacing="0" cellpadding="4">
+ <tr>
+ <td>
+ <center>
+ <a
href="jboss_linux_trail_index.html">contents </a></center>
+ </td>
+ <td>
+ <center>
+ <a href="jboss2.html">FORWARD: Step 2:
creating the Bean </a></center>
+ </td>
+ </tr>
+ </table>
+ </body>
- When you're happy that the server is running
-correctly, go on to the next step.
-<p> </p>
-<TABLE ALIGN="CENTER" BORDER=1 CELLSPACING=0 CELLPADDING=4>
- <tr>
- <td>
- <p align=center><a href=jboss_linux_trail_index.html> contents </a></p>
- </td>
- <td>
- <p align=center><a href=jboss2.html>
- FORWARD: Step 2: creating the Bean </a></p>
- </td>
- </tr>
-</table>
-</body>
</html>
1.2 +168 -257 jbossweb/getting_startedJB2.htm
Index: getting_startedJB2.htm
===================================================================
RCS file: /products/cvs/ejboss/jbossweb/getting_startedJB2.htm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- getting_startedJB2.htm 2000/08/29 23:10:55 1.1
+++ getting_startedJB2.htm 2000/09/01 23:53:47 1.2
@@ -7,262 +7,173 @@
</head>
<body bgcolor="white" leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr height="1958">
- <td bgcolor="white" valign="top">
- <table border="0" cellpadding="0" cellspacing="0" width="100%" height="51">
- <tbody>
- <tr height="2">
- <td height="2"><img src="picture/corner-nw-small.gif" width="11"
height="11"></td>
- </tr>
- <tr height="37">
- <td height="37"><img alt="o" height="1" src="binary.htm" width="1"><font
color="#ffcc00" face="Arial,Helvetica,sans-serif" size="6"><b>jBoss
- 2.0</b></font></td>
- </tr>
- </tbody>
- </table>
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr height="2">
- <td bgcolor="white" valign="bottom" width="11"><img
src="picture/corner-sw-small.gif" width="11" height="11"></td>
- <td bgcolor="white" width="100%"></td>
- <td bgcolor="white" width="21"></td>
- <td width="4"></td>
- </tr>
- <tr>
- <td bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm"
width="1"></td>
- <td bgcolor="#99cc66" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr bgcolor="#99cc66">
- <td width="100%"><font face="Myriad Web,Arial"
color="white"><b>Help
- on getting started! </b></font></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#FFFFFF" width="21"><img src="picture/corner-e.gif"
width="22" height="22"></td>
- <td width="4"></td>
- </tr>
- <tr height="99">
- <td bgcolor="white" valign="top" width="11"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
- <td align="right" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%"
height="89">
- <tbody>
- <tr>
- <td valign="top" width="648">
- <p><a href="jboss_linux_trail_index.html"><font face="Myriad
Web,Arial">Beginning
- EJB programming using jBoss (Linux)</font></a></p>
- <p><a href="jboss_win32_trail_index.html"><font face="Myriad
Web,Arial">Beginning
- EJB programming using jBoss (Windows)</font></a></p>
- <p><font face="Myriad Web,Arial"><a
href="jboss_cmp_trail_index.html">Using
- container-managed persistence with jBoss</a></font></p>
- <p><font face="Myriad Web,Arial" size="2"><a href="jboss.pdf">pdf
- version </a></font></p>
- </td>
- <td valign="top" width="10"></td>
- <td align="right" valign="top" width="10"> </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td width="21"><img alt="o" height="1" src="binary.htm" width="1"></td>
- <td width="4"></td>
- </tr>
- </tbody>
- </table>
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td bgcolor="white" valign="bottom" width="11"><img
src="picture/corner-sw-small.gif" width="11" height="11"></td>
- <td bgcolor="white" width="100%"></td>
- <td bgcolor="white" width="21"></td>
- <td width="4"></td>
- </tr>
- <tr>
- <td bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm"
width="1"></td>
- <td bgcolor="#99cc66" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr bgcolor="#99cc66">
- <td width="100%"><font face="Myriad Web,Arial"
color="white"><b>Documentation</b></font></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#FFFFFF" width="21"><img src="picture/corner-e.gif"
width="22" height="22"></td>
- <td width="4"></td>
- </tr>
- <tr height="56">
- <td bgcolor="white" valign="top" width="11"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
- <td align="right" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%"
height="89">
- <tbody>
- <tr>
- <td valign="top" width="672">
- <ol>
- <li><font face="Myriad Web,Arial">Server information can be
- found <a href="server.html">here</a>.</font></li>
- <li><font face="Myriad Web,Arial">EJB development information
- can be found <a href="ejb.html">here</a>.</font></li>
- <li><font face="Myriad Web,Arial">EJB container information
- can be found <a href="container.html">here</a>.</font></li>
- </ol>
- <p><font face="Myriad Web,Arial" size="2"><a
href="jboss2.0_doc.pdf">pdf
- version </a></font> </p>
- </td>
- <td valign="top" width="10"></td>
- <td align="right" valign="top" width="11"> </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td width="21"><img alt="o" height="1" src="binary.htm" width="1"></td>
- <td width="4"></td>
- </tr>
- </tbody>
- </table>
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td bgcolor="white" valign="bottom" width="11"><img
src="picture/corner-sw-small.gif" width="11" height="11"></td>
- <td bgcolor="white" width="100%"></td>
- <td bgcolor="white" width="21"></td>
- <td width="4"></td>
- </tr>
- <tr>
- <td bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm"
width="1"></td>
- <td bgcolor="#99cc66" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr bgcolor="#99cc66">
- <td width="100%"><font face="Myriad Web,Arial"
color="white"><b>License</b></font></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#FFFFFF" width="21"><img src="picture/corner-e.gif"
width="22" height="22"></td>
- <td width="4"></td>
- </tr>
- <tr height="56">
- <td bgcolor="white" valign="top" width="11"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
- <td align="right" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%"
height="89">
- <tbody>
- <tr>
- <td valign="top" width="672">
- <p><font face="Myriad Web,Arial">jBoss 2.0 is licensed under
- the GPL license. See <a
href="http://www.gnu.org">www.gnu.org</a>
- for details. </font></p>
- </td>
- <td valign="top" width="10"></td>
- <td align="right" valign="top" width="11"> </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td width="21"><img alt="o" height="1" src="binary.htm" width="1"></td>
- <td width="4"></td>
- </tr>
- </tbody>
- </table>
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr height="2">
- <td bgcolor="white" valign="bottom" width="11"><img
src="picture/corner-sw-small.gif" width="11" height="11"></td>
- <td bgcolor="white" width="100%"></td>
- <td bgcolor="white" width="21"></td>
- <td width="4"></td>
- </tr>
- <tr>
- <td bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm"
width="1"></td>
- <td bgcolor="#99cc66" width="100%">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr bgcolor="#99cc66">
- <td width="100%"><font face="Myriad Web,Arial"
color="white"></font></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#FFFFFF" width="21"><img src="picture/corner-e.gif"
width="22" height="22"></td>
- <td width="4"></td>
- </tr>
- <tr height="99">
- <td bgcolor="white" valign="top" width="11" height="89"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
- <td align="right" width="100%" height="89">
- <table border="0" cellpadding="0" cellspacing="0" width="100%"
height="89">
- <tbody>
- <tr>
- <td valign="top" width="648">
- <p> </p>
- </td>
- <td valign="top" width="10"></td>
- <td align="right" valign="top" width="10"> </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td width="21" height="89"><img alt="o" height="1" src="binary.htm"
width="1"></td>
- <td width="4" height="89"></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="white" valign="top" width="170">
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td> </td>
- </tr>
- <tr>
- <td><img alt="o" height="1" src="binary.htm" width="1"><font
color="#424264" face="Myriad Web,Arial" size="1">
- </font></td>
- </tr>
- </tbody>
- </table>
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody>
- <tr height="20">
- <td bgcolor="#FFFFFF">
- <div align="right"> <img src="picture/corner-w.gif" width="10"
height="22"></div>
- </td>
- <td bgcolor="#336600" width="100%" myriad web, arial"><b>Download
</b><font face="Arial,Helvetica,sans-serif" color="white"><b></b></font></td>
- <td bgcolor="#396c06"><img alt="o" height="1" src="picture/blank.gif"
width="1"></td>
- </tr>
- <tr height="278">
- <td></td>
- <td bgcolor="#99cc66" width="100%">
- <table border="0" cellpadding="2" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td>
- <table border="0" cellpadding="2" cellspacing="0" width="100%">
- <tbody>
- <tr height="249">
- <td height="125">
- <p><font face="Myriad Web,Arial" size="2">Download the
- Pdf version of </font><font face="Myriad Web,Arial"
size="2">the
- <a href="jboss2.0_doc.pdf">technical documentation</a>
- and of <a href="jboss.pdf">the getting started
documentation</a></font></p>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#99cc66"></td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bgcolor="#bfbffe"></td>
- </tr>
-</table>
-</body>
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tbody>
+ <tr height="1958">
+ <td bgcolor="white" valign="top" height="1958">
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%" height="51">
+ <tbody>
+ <tr height="2">
+ <td
height="2"><img src="picture/corner-nw-small.gif" width="11" height="11"></td>
+ </tr>
+ <tr height="37">
+ <td
height="37"><img alt="o" height="1" src="binary.htm" width="1"><font color="#ffcc00"
face="Arial,Helvetica,sans-serif" size="6"><b>jBoss 2.0 Doco </b></font></td>
+ </tr>
+ </tbody>
+ </table>
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%">
+ <tbody>
+ <tr height="2">
+ <td
bgcolor="white" valign="bottom" width="11" height="2"><img
src="picture/corner-sw-small.gif" width="11" height="11"></td>
+ <td
bgcolor="white" width="100%" height="2"></td>
+ <td
bgcolor="white" width="21" height="2"></td>
+ <td width="4"
height="2"></td>
+ </tr>
+ <tr>
+ <td
bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm" width="1"></td>
+ <td
bgcolor="#99cc66" width="100%">
+ <table
border="0" cellpadding="0" cellspacing="0" width="100%">
+
<tbody>
+
<tr bgcolor="#99cc66">
+
<td width="100%"><font face="Myriad Web,Arial"
color="white"><b>Documentation</b></font></td>
+
</tr>
+
</tbody>
+
</table>
+ </td>
+ <td
bgcolor="white" width="21"><img src="picture/corner-e.gif" width="22" height="22"></td>
+ <td
width="4"></td>
+ </tr>
+ <tr height="99">
+ <td
bgcolor="white" valign="top" width="11" height="99"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
+ <td
align="right" width="100%" height="99">
+ <table
border="0" cellpadding="0" cellspacing="0" width="100%" height="89">
+
<tbody>
+
<tr>
+
<td valign="top" width="648">
+
<p><font face="Myriad Web,Arial"><b>Getting
Started</b></font></p>
+
<p><a href="jboss_linux_trail_index.html"><font face="Myriad
Web,Arial">Beginning EJB programming using jBoss (Linux)</font></a></p>
+
<p><a href="jboss_win32_trail_index.html"><font face="Myriad
Web,Arial">Beginning EJB programming using jBoss (Windows)</font></a></p>
+
<p></p>
+
<p><font face="Myriad Web,Arial"><b>Advanced
Topics</b></font></p>
+
<p><a href="datasource.htm"><font face="Myriad
Web,Arial">Adding a DataSource to jBoss</font></a></p>
+
<p><a href="jbossxml_howto.html"><font face="Myriad
Web,Arial">Using jboss.xml for advanced configurations (JNDI override, ejb-ref,
Container conf)</font></a></p>
+
<p><a href="jboss_cmp_trail_index.html"><font face="Myriad
Web,Arial">Using container-managed persistence with jBoss</font></a></p>
+
<p><a href="minerva/minerva.htm"><font face="Myriad
Web,Arial">Using advanced pool management with Minerva</font></a></p>
+
<p><a href="zoap/zoap.htm"><font face="Myriad
Web,Arial">Using SOAP for invocation with ZOAP</font></a></p>
+
<p></p>
+
<p><font face="Myriad Web,Arial"><b>How-To</b></font></p>
+
<p><a href="oraclecmp.htm"><font face="Myriad Web,Arial">CMP
with ORACLE Howto</font></a></p>
+
<p><a href="mssql.htm"><font face="Myriad Web,Arial">MS SQL
Server (includes JDBC-ODBC) Howto</font></a></p>
+
<p><a href="jbuilder.htm"><font face="Myriad Web,Arial">Run
jBoss and debug EJBs in JBuilder's Debugger Howto</font></a></p>
+
<p><a href="postgres.htm"><font face="Myriad Web,Arial">CMP
with PostgreSQL MLET Howto</font></a></p>
+
<p><font face="Myriad Web,Arial"><a
href="rmh_howto.html">RMH (run the examples) Howto</a></font></p>
+
<p></p>
+
<p><font face="Myriad Web,Arial"><b>Container developer
documentation</b></font></p>
+
<p><a href="container.html"><font face="Myriad
Web,Arial">jboss container architecture.</font></a></p>
+
<p></p>
+
<p><font face="Myriad Web,Arial"><b>License</b></font></p>
+
<p><font face="Myriad Web,Arial">jBoss 2.0 is licensed under
the GPL license. </font></p>
+
<p><font face="Myriad Web,Arial">See <a
href="http://www.gnu.org">www.gnu.org</a> for details. </font></td>
+
<td valign="top" width="10"></td>
+
<td align="right" valign="top" width="10"> </td>
+
</tr>
+
</tbody>
+
</table>
+ </td>
+ <td width="21"
height="99"><img alt="o" height="1" src="binary.htm" width="1"></td>
+ <td width="4"
height="99"></td>
+ </tr>
+ </tbody>
+ </table>
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%">
+ <tbody>
+ <tr height="2">
+ <td
bgcolor="white" valign="bottom" width="11" height="2"><img
src="picture/corner-sw-small.gif" width="11" height="11"></td>
+ <td
bgcolor="white" width="100%" height="2"></td>
+ <td
bgcolor="white" width="21" height="2"></td>
+ <td width="4"
height="2"></td>
+ </tr>
+ <tr>
+ <td
bgcolor="#99cc66" width="11"><img alt="o" height="1" src="binary.htm" width="1"></td>
+ <td
bgcolor="#99cc66" width="100%">
+ <table
border="0" cellpadding="0" cellspacing="0" width="100%">
+
<tbody>
+
<tr bgcolor="#99cc66">
+
<td width="100%"></td>
+
</tr>
+
</tbody>
+
</table>
+ </td>
+ <td
bgcolor="white" width="21"><img src="picture/corner-e.gif" width="22" height="22"></td>
+ <td
width="4"></td>
+ </tr>
+ <tr height="99">
+ <td
bgcolor="white" valign="top" width="11" height="99"><img
src="picture/corner-nw-small.gif" width="11" height="11"></td>
+ <td
align="right" width="100%" height="99">
+ <table
border="0" cellpadding="0" cellspacing="0" width="100%" height="89">
+
<tbody>
+
<tr>
+
<td valign="top" width="648"> </td>
+
<td valign="top" width="10"></td>
+
<td align="right" valign="top" width="10"> </td>
+
</tr>
+
</tbody>
+
</table>
+ </td>
+ <td width="21"
height="99"><img alt="o" height="1" src="binary.htm" width="1"></td>
+ <td width="4"
height="99"></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td bgcolor="white" valign="top" width="170"
height="1958">
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%">
+ <tbody>
+ <tr>
+ <td> </td>
+ </tr>
+ <tr>
+ <td><img
alt="o" height="1" src="binary.htm" width="1"><font color="#424264" face="Myriad
Web,Arial" size="1"> </font></td>
+ </tr>
+ </tbody>
+ </table>
+ <table border="0" cellpadding="0"
cellspacing="0" width="100%">
+ <tbody>
+ <tr height="20">
+ <td
bgcolor="white" height="20">
+ <div
align="right">
+
<img src="picture/corner-w.gif" width="10" height="22"></div>
+ </td>
+ <td
bgcolor="#336600" width="100%" myriad web, arial" height="20"><b>Download </b></td>
+ <td
bgcolor="#396c06" height="20"><img alt="o" height="1" src="picture/blank.gif"
width="1"></td>
+ </tr>
+ <tr height="278">
+ <td
height="278"></td>
+ <td
bgcolor="#99cc66" width="100%" height="278">
+ <table
border="0" cellpadding="2" cellspacing="0" width="100%">
+
<tbody>
+
<tr>
+
<td>
+
<table border="0" cellpadding="2" cellspacing="0"
width="100%">
+
<tbody>
+
<tr height="249">
+
<td height="249"><font face="Myriad
Web,Arial" size="2">Binaries can be found<a href="binary.htm"> here</a></font></td>
+
</tr>
+
</tbody>
+
</table>
+
</td>
+
</tr>
+
</tbody>
+
</table>
+ </td>
+ <td
bgcolor="#99cc66" height="278"></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td bgcolor="#bfbffe" height="1958"></td>
+ </tr>
+ </table>
+ </body>
</html>
1.1 jbossweb/rmh_jboss.zip
<<Binary file>>
1.1 jbossweb/rmh_howto.html
Index: rmh_howto.html
===================================================================
<html>
<head>
<title>
Running Richard Monson-Haefel's examples
</title>
</head>
<font face=arial,helvetica size=+3 color="#ffcc00">
Running the Examples from Enterprise JavaBeans, by Richard Monson-Haefel (Unix)
</font>
<p>This page describes how to run the examples from Richard Monson-Haefel's book <a
href="http://www.oreilly.com/catalog/entjbeans2/">Enterprise JavaBeans, 2nd
Edition</a> (Chapter 4) in jBoss.</p>
<p>You can download the <a
href="http://www.oreilly.com/catalog/entjbeans2/chapter/examples.zip">examples</a>
(zip file) from O'Reilly's site. I will assume you have unzipped this file and you
work in the <tt>chapter4/EJB11</tt> directory.</p>
<p>These examples need to be slightly modified to run with jBoss. You can download
the modified version from <a href="rmh_jboss.zip">here</a>, but I recommend you to
follow these instructions which tell exactly what has to be modified.</p>
<ul>
<li><b>Setup your environment</b>.<br> jBoss libraries will be needed to compile and
run the examples, so you have to set the environment variable <tt>JBOSS_HOME</tt> to
your jBoss installation. For example:
<ul>
<li><tt>export JBOSS_HOME=$HOME/jboss_pr4 </tt> if you have the binary version in
your home directory
<li><tt>export JBOSS_HOME=$HOME/jboss/dist </tt> if you have the CVS version.
</ul><br>
<li><b>Compile and deploy the beans</b>.<br> The beans are almost ok for jBoss, the
only difference is about the reference made by <em>TravelAgentBean</em> to
<em>CabinBean</em>: a bean must lookup in the <tt>java:comp/env</tt> namespace. Edit
<em>com/titan/travelagent/TravelAgentBean.java</em>, and replace
<pre>Object obj = jndiContext.lookup("ejb/CabinHome");</pre>
with
<pre>Object obj = jndiContext.lookup("java:comp/env/ejb/CabinHome");</pre>
<p>This ejb-reference from TravelAgentBean (in travelagent.jar) to CabinBean (in
cabin.jar) is an external reference (different ejb-jar file). You must then provide
the full jndi name for CabinBean in a jboss.xml for TravelAgentBean: create and edit
<em>com/titan/travelagent/jboss.xml</em>
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<?xml version="1.0"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>TravelAgentBean</ejb-name>
<ejb-ref>
<ejb-ref-name>ejb/CabinHome</ejb-ref-name>
<jndi-name>CabinBean</jndi-name>
</ejb-ref>
</session>
</enterprise-beans>
</jboss></pre></td></tr></table></p>
You don't jave to change anything in <em>ejb-jar.xml</em>.
You can now use the following script <em>jbossMakeIt.sh</em> to compile and deploy:
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
#!/bin/sh
# make cabin bean
javac -classpath $JBOSS_HOME/lib/ext/ejb.jar:. \
com/titan/cabin/Cabin*.java
cp com/titan/cabin/ejb-jar.xml META-INF/ejb-jar.xml
jar cvf cabin.jar com/titan/cabin/Cabin*.class META-INF/ejb-jar.xml
# make travelagent bean
javac -classpath $JBOSS_HOME/lib/ext/ejb.jar:. \
com/titan/travelagent/TravelAgent*.java
cp com/titan/travelagent/ejb-jar.xml \
com/titan/travelagent/jboss.xml \
META-INF/
# jBoss needs the Home, Remote and primary key (PK) classes
# of the Cabin in travelagent.jar so that TravelAgent*.class
# can access the Cabin bean
jar cvf travelagent.jar \
com/titan/cabin/CabinHome.class \
com/titan/cabin/Cabin.class \
com/titan/cabin/CabinPK.class \
com/titan/travelagent/TravelAgent*.class \
META-INF/ejb-jar.xml META-INF/jboss.xml
rm -f META-INF/ejb-jar.xml
rm -f META-INF/jboss.xml
# deploy
cp cabin.jar travelagent.jar $JBOSS_HOME/deploy
</pre></td></tr></table></p>
<li><b>Compile the clients.</b> <br>The clients from the examples perform a
<tt>lookup</tt> on the <tt>java:comp/env</tt> namespace, which is not currently
supported by jBoss for the clients. You have to make the following edits:
(<tt>CabinBean</tt> is the jndi name under which the Cabin Bean is deployed, see the
<a href="jndi_howto.html">jndi howto</a>)
<p>In <em>com/titan/cabin/Client_1.java</em> replace
<pre>Object obj = jndiContext.lookup("java:comp/env/ejb/CabinHome");</pre>
by
<pre>Object obj = jndiContext.lookup("CabinBean");</pre>
</p>
<p>In <em>com/titan/cabin/Client_2.java</em> replace
<pre>Object obj = jndiContext.lookup("ejb/CabinHome");</pre>
by
<pre>Object obj = jndiContext.lookup("CabinBean");</pre>
</p>
<p>In <em>com/titan/travelagent/Client_1.java</em> replace
<pre>Object obj = jndiContext.lookup("ejb/CabinHome");</pre>
by
<pre>Object obj = jndiContext.lookup("CabinBean");</pre>
</p>
<p>You can now use jBossMakeClients.sh to compile:</p>
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
#!/bin/sh
javac -classpath $JBOSS_HOME/lib/ext/ejb.jar:. \
com/titan/cabin/Client*.java \
com/titan/travelagent/Client*.java
</pre></td></tr></table></p>
<li><b>Run the clients</b><br>We don't use Sun's RI runclient tool, so RunIt.sh
won't work. Instead, we provide the following script: <em>jBossRunClient.sh</em>. This
file includes all the jBoss libraries needed in the classpath.
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
#!/bin/sh
CP=$JBOSS_HOME/client/ejb.jar
CP=$CP:$JBOSS_HOME/client/jndi.jar
CP=$CP:$JBOSS_HOME/client/jta-spec1_0_1.jar
CP=$CP:$JBOSS_HOME/client/jboss-client.jar
CP=$CP:$JBOSS_HOME/client/jnp-client.jar
CP=$CP:.
java -cp $CP $1
</pre></td></tr></table></p>
<p>You also have to set the jndi properties to connect to the server. This is done
in the <em>jndi.properties</em> file (this file must be in the same directory as
<em>jBossRunClient.sh</em>)</p>
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost
java.naming.factory.url.pkgs=org.jboss.naming;
</pre></td></tr></table></p>
<p>You can now run the clients. The script take the name of the client as an
argument, try </p>
<p><tt>./jBossRunClient.sh com.titan.cabin.Client_1<br>
./jBossRunClient.sh com.titan.cabin.Client_2<br>
./jBossRunClient.sh com.titan.travelagent.Client_1</tt></p>
<p><b>NOTES</b>:<ul>
<li>the clients will only run once, since they use the <tt>EJBHome.create()</tt>
method: at second run, a <tt>DuplicateKeyException</tt> will occur.
<li>I recommend you to turn off debug logging for these examples. Edit
<em>$JBOSS_HOME/conf/jboss.conf</em>, in the ConsoleLogging section, set the first
<tt>ARG</tt> to <tt>"Error"</tt>.
</ul>
</ul>
<hr>
Author: <a href="mailto:[EMAIL PROTECTED]">S�bastien Alborini</a>
</body>
</html>
1.1 jbossweb/postgres.htm
Index: postgres.htm
===================================================================
I use the following for PostgreSQL:<br>
<br>
In JBOSS_HOME/conf/jboss.conf:<br>
<br>
<MLET CODE = "org.jboss.jdbc.DataSourceImpl"<br>
ARCHIVE="jboss.jar,jdbc2_0-stdext.jar"
CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"<br>
VALUE="jdbc:postgresql://<host>/<database>"><br>
<ARG TYPE="java.lang.String"
VALUE="PostgreSQLPool"><br>
<ARG TYPE="java.lang.String"
VALUE="postgresql.Driver"><br>
<ARG TYPE="java.lang.String" VALUE="<user
name>"><br>
<ARG TYPE="java.lang.String"
VALUE="<password>"><br>
</MLET><br>
<br>
<br>
In jboss.properties:<br>
<br>
jdbc.drivers=postgresql.Driver<br>
<br>
In the jaws.xml of the deployed bean, the above-mentioned DataSource<br>
must be specified. The default PostgreSQL mappings, by the way, don't<br>
seem to work in my setup, so I've added them to the jaws.xml file, too:<br>
<br>
<jaws><br>
<datasource>PostgreSQLPool</datasource><br>
<type-mapping>PostgreSQL</type-mapping><br>
<br>
<type-mappings><br>
<type-mapping><br>
<name>PostgreSQL</name><br>
<mapping><br>
<java-type>java.lang.Boolean</java-type><br>
<jdbc-type></jdbc-type><br>
<sql-type>BIT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Short</java-type><br>
<jdbc-type>INTEGER</jdbc-type><br>
<sql-type>INTEGER</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.util.Date</java-type><br>
<jdbc-type>DATE</jdbc-type><br>
<sql-type>DATE</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Double</java-type><br>
<jdbc-type>DOUBLE</jdbc-type><br>
<sql-type>FLOAT8</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Character</java-type><br>
<jdbc-type>CHAR</jdbc-type><br>
<sql-type>CHAR</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Object</java-type><br>
<jdbc-type>BLOB</jdbc-type><br>
<sql-type>BLOB</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.sql.TimeStamp</java-type><br>
<jdbc-type>TIMESTAMP</jdbc-type><br>
<sql-type>TIMESTAMP</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Integer</java-type><br>
<jdbc-type>INTEGER</jdbc-type><br>
<sql-type>INTEGER</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Byte</java-type><br>
<jdbc-type>TINYINT</jdbc-type><br>
<sql-type>TINYINT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Float</java-type><br>
<jdbc-type>FLOAT</jdbc-type><br>
<sql-type>FLOAT4</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.String</java-type><br>
<jdbc-type>VARCHAR</jdbc-type><br>
<sql-type>TEXT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Long</java-type><br>
<jdbc-type>BIGINT</jdbc-type><br>
<sql-type>BIGINT</sql-type><br>
</mapping><br>
</type-mapping><br>
</type-mappings><br>
</jaws>
<p></p>
<p>
1.1 jbossweb/oraclecmp.htm
Index: oraclecmp.htm
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive 4">
<title>JBoss Setup</title>
</head>
<body>
<h2>JBoss CMP Quick Start using JBoss 2.0 and Oracle</h2>
<p>Author: Ewan Branda<br>
Last revised: July 11, 2000</p>
<p>This guide should help you to quickly get JBoss 2.0 up and running
using container-managed persistence and Oracle. With minor modifications you can use
the same example with any database. It should be used in conjunction with the
documents <i>Beginning EJB programming using jBoss</i> and <i>Using container-managed
persistence with jBoss</i> available at the <a href="http://www.jboss.org">JBoss</a>
web site (click on "Getting Started" under "How To").</p>
<p>In order to get JBoss up and running you have to do the
following basic procedures: </p>
<ol>
<li>Download and install the JBoss server
<li>Configure the JBoss server
<li>Deploy your EJB's to the JBoss server
<li>Build and run your client application
</ol>
<p>
<hr>
<h3>Download and Installation</h3>
<ol type="1">
<li>If you are not running Java 1.3 then download it from <a
href="http://java.sun.com">http://java.sun.com</a> and install it. JBoss only works
with version 1.3 of the java VM.
<li>Download the jboss 2.0 distribution from <a
href="http://www.jboss.org">http://www.jboss.org</a>.
<li>Download the minerva.jar archive from <a
href="http://www.jboss.org">http://www.jboss.org</a>.
<li>Run the JBoss installer and point it to the 1.3 VM when
prompted. The remainder of this document will refer to the JBoss installation
directory as <em>$JBOSS_ROOT</em> .
<li>Copy the minerva.jar archive to the
<i>$JBOSS_ROOT/lib/ext</i> directory
</ol>
<p>
<hr>
<h3> JBoss Server Configuration</h3>
<ol>
<li>Edit the <em>$JBOSS_ROOT/conf/jboss.conf</em> file. You
need to add <code><MLET></code> tags for each data source you are using. These
notes assume that you are using the Minerva connection pooler (installed in the steps
above). Here is an example entry for an oracle data source:
<p><code><MLET
CODE="org.jboss.jdbc.XADataSourceLoader"
ARCHIVE="jboss.jar,minerva.jar" CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"
VALUE="MyConnectionPool"><br>
<ARG TYPE="java.lang.String"
VALUE="org.jboss.minerva.xa.XADataSourceImpl"><br>
<ARG TYPE="java.lang.String"
VALUE="jdbc:oracle:thin:@localhost:1521:orcl"><br>
<ARG TYPE="java.lang.String"
VALUE="theUsername"><br>
<ARG TYPE="java.lang.String"
VALUE="thePassword"><br>
<ARG TYPE="java.lang.String"
VALUE=""><br>
<ARG TYPE="java.lang.Integer"
VALUE="2"><br>
<ARG TYPE="java.lang.Integer"
VALUE="5"></code><code><br>
<ARGTYPE="java.lang.String"VALUE="GCEnabled=true;ShrinkingEnabled=true;GCMinIdleTime=30000;GCInterval=10000;ShrinkMinIdleTime=30000"><br>
</MLET></code></p>
<p>Note that the name specified in the first attribute tag
above ("MyConnectionPool" in this example) will be the name used to refer to
the data source in the <i>meta-inf/jboss.xml</i> (discussed later). The third argument
is the database connection url and should be in the standard JDBC url format for that
driver. Refer to the <a href="http://www.jboss.org">Minerva documentation</a> (select
the "Minerva" link at left) for a discussion of JDBC driver types and tag
formats.</p>
<p>An example <i>jboss.conf</i> file can be found <a
href="#jboss_conf_xml">here</a>.</p>
<li>
<p>Edit the <em>$JBOSS_ROOT/conf/jboss.properties</em> file.
You need to add any JDBC drivers you are using to the <i>jdbc.drivers</i> property.
Here is an example entry:</p>
<p><code>jdbc.drivers=org.hsql.jdbcDriver,oracle.jdbc.driver.OracleDriver</code>. This
example deployment was tested using Oracle 8i Personal Edition (8.1.5) and the
Oracle8i 8.1.6.0.1 Thin JDBC driver (downloadable from the <a
href="http://www.oracle.com">Oracle site</a>).</p>
<li>Add the JDBC driver class files or jar file to the
<em>$JBOSS_ROOT/lib/ext</em> directory.
</ol>
<p>
<hr>
<h3>EJB Deployment</h3>
<ol>
<li>Create a <i>jaws.xml</i> configuration file. This file
specifies details about the data source. It "imports" the data source into
the EJB application context. Immediately below the <code><jaws></code>
tag insert the following code:
<p><code><datasource>xa.MyConnectionPool</datasource><br>
<type-mapping>MyOracleTypeMapping</type-mapping>
</code></p>
<p>Note that the <code>datasource</code> attribute
("MyConnectionPool" in this case) corresponds to the name attribute in the
<code><MLET></code> tag you added to the jboss.conf file. The
"<code>xa.</code>" is required. "MyOracleTypeMapping" is the
name of the type mapping configuration specified later in the same file.
See the example code for details.</p>
<p>You should include datatype mappings (java to SQL) for the
datasource you are using (see the example file). In addition, you may optionally
include object-to-relational mapping information, such as the table name to use for a
specified entity bean, the entity field name to table column name mappings, etc. If
you don't provide these JBoss will use the ejb-name property as the table name and the
entity bean field names for column names. See the example jaws.xml file for
details.</p>
<p>An example <i>jaws.xml </i>file can be found <a
href="#jaws_xml">here</a>.</p>
<li>Create a <i>jboss.xml</i> deployment descriptor. This file
can be copied from a previous deployment, making some modifications. Immediately
below the <code><jboss></code> tag insert the following code:
<p><code><resource-managers><br>
<resource-manager
res-class="org.jboss.ejb.deployment.JDBCResource"><br>
<res-name>MyDB</res-name><br>
<res-jndi-name>xa.MyConnectionPool</res-jndi-name><br>
</resource-manager><br>
</resource-managers> </code></p>
<p>Note that the <code>res-jndi-name</code> attribute
("MyConnectionPool" in this case) corresponds to the name attribute in the
<code><MLET></code> tag you added to the jboss.conf file. The
"<code>xa.</code>" is required. Note also that the <code>res-name</code>
attribute ("MyDB") will be used by the entity specifiers in
<i>ejb-jar.xml</i> to refer to data source resources, as discussed below.<br>
<br>
An example <i>jboss.xml </i>file can be found <a
href="#jboss_xml">here</a> .</p>
<li>Create an <i>ejb-jar.xml</i> deployment descriptor. This
should conform to EJB1.1 standards for this file type. Each entity bean that uses CMP
should have the following code within the <code><entity></code> tag:
<p><code><resource-ref><br>
<description>Data source</description<br>
<res-ref-name>MyDB</res-ref-name><br>
<res-type>javax.sql.DataSource</res-type><br>
<res-auth>Container</res-auth><br>
</resource-ref> </code></p>
<p>Note that the <code>res-ref-name</code> attribute
("MyDB" in this case) corresponds to the <code>res-name </code>attribute in
the <code>resource-ref</code> section of the <em>jboss.xml</em> file. This code tells
the ejb container to use <code>MyDB</code> as the data source for persistence
operations for this entity.</p>
<p>An example <i>ejb-jar.xml </i>file can be found <a
href="#ejb-jar_xml">here</a>. Note that the <ejb-name> attribute of the
<entity> will be the table name created in the database at deployment time. Also
note that database table names and column names can be optionally included in the
entity tags.</p>
<li>
<p>Package your ejb classes and the three xml files you build
in the preceding steps into a jar file. The xml files should reside in a meta-inf
directory. An example script is <code>jar cvf myapp.jar *.class
META-INF\*.xml</code></p>
<li>
<p>Deploy the jar file to the JBoss server. To do this, simply
copy the jar file to the <i>$JBOSS_ROOT/deploy</i> directory. If the JBoss server is
already running then it will automatically redeploy the application. If the server is
not yet running then start it by running <i>$JBOSS_ROOT/bin/run.bat</i>. This will
deploy the application, hopefully without errors. There may be some errors that appear
that I don't understand and that don't appear to affect the application runtime. These
include the line <code>[Container factory] java.lang.NullPointerException</code>. You
need to make sure that the server outputs <code>[Container factory] Bound MyBean to
MyBeanJNDIName</code> for each of your beans, where "MyBeanJNDIName" is
the name specified in the <code><jndi-name></code> attribute for each bean in
the <i>jboss.xml</i> file. The server should finally output <code>[Container factory]
Deployed application: file:/$JBOSS_ROOT/deploy/myApp.jar</code> wh!
ere "myApp.jar" is the name of the jar file you built in the previous
step.</p>
</ol>
<p>
<hr>
<h3>Running the Client Application</h3>
<ol>
<li>Run a client application to use the deployed beans. The
client app can access the beans using the following code:
<p><code>Properties props = new Properties();<br>
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");<br>
props.put(Context.URL_PKG_PREFIXES,
"org.jnp.interfaces");<br>
props.put(Context.PROVIDER_URL,
"localhost"); <br>
InitialContext jndiContext = new InitialContext(props);<br>
Object ref =
jndiContext.lookup("MyBeanJNDIName"); </code></p>
<p>where "MyBeanJNDIName" is the JNDI name specified
in the <code><jndi-name></code> attribute in the <i>jboss.xml</i> file.
<p>The client application must have the following classes in
the VM classpath in order to run:</p>
<ul>
<li><i>$JBOSS_ROOT/lib/ext/ejb.jar</i>
<li><i>$JBOSS_ROOT/client/jnp-client.jar</i>
<li><i>$JBOSS_ROOT/client/jboss-client.jar</i>
</ul>
<p>An example client execution command would be:<br>
<code>java -classpath
d:\jboss2\lib\ext\ejb.jar;d:\jboss2\client\jnp-client.jar;d:\jboss2\client\jboss-client.jar
mypackage.MyClientClass</code></p>
</ol>
<p>
<hr>
<h3>Example Deployment Files</h3>
<p>
<hr>
<a name="jaws_xml"></a>
<h4>jaws.xml</h4>
<p><code><?xml version="1.0"
encoding="UTF-8"?><br>
<jaws></code></p>
<p><code>
<datasource>xa.MyConnectionPool</datasource><br>
<type-mapping>MyOracleTypeMapping</type-mapping></code></p>
<p><code> <type-mappings><br>
<br>
<type-mapping></code></p>
<p><code>
<name>MyOracleTypeMapping</name><br>
<mapping><br>
<java-type>java.lang.Long</java-type><br>
<jdbc-type>BIGINT</jdbc-type><br>
<sql-type>BIGINT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.String</java-type><br>
<jdbc-type>VARCHAR</jdbc-type><br>
<sql-type>VARCHAR(256)</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Character</java-type><br>
<jdbc-type>CHAR</jdbc-type><br>
<sql-type>CHAR</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Short</java-type><br>
<jdbc-type>INTEGER</jdbc-type><br>
<sql-type>INTEGER</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.sql.TimeStamp</java-type><br>
<jdbc-type>TIMESTAMP</jdbc-type><br>
<sql-type>TIMESTAMP</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Double</java-type><br>
<jdbc-type>DOUBLE</jdbc-type><br>
<sql-type>DOUBLE</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Byte</java-type><br>
<jdbc-type>TINYINT</jdbc-type><br>
<sql-type>TINYINT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Boolean</java-type><br>
<jdbc-type></jdbc-type><br>
<sql-type>BIT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Float</java-type><br>
<jdbc-type>FLOAT</jdbc-type><br>
<sql-type>FLOAT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Object</java-type><br>
<jdbc-type>JAVA_OBJECT</jdbc-type><br>
<sql-type>JAVA_OBJECT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.util.Date</java-type><br>
<jdbc-type>DATE</jdbc-type><br>
<sql-type>DATE</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Integer</java-type><br>
<jdbc-type>INTEGER</jdbc-type><br>
<sql-type>INTEGER</sql-type><br>
</mapping><br>
</type-mapping></code></p>
<p><code> </type-mappings></code></p>
<p><code> </code></p>
<p><code> <!-- This section provides optional
object-to-relational mapping descriptions --></code></p>
<p><code> <enterprise-beans></code></p>
<p><code> <entity><br>
<ejb-name>MyMovieBean</ejb-name><br>
<table-name>MOVIE_TABLE</table-name><br>
<create-table>true</create-table><br>
<remove-table>false</remove-table><br>
<tuned-updates>true</tuned-updates><br>
<read-only>false</read-only><br>
<time-out>300</time-out><br>
<cmp-field><br>
<field-name>id</field-name><br>
<column-name>ID</column-name><br>
<sql-type>INTEGER</sql-type><br>
<jdbc-type>INTEGER</jdbc-type><br>
</cmp-field><br>
<cmp-field><br>
<field-name>title</field-name><br>
<column-name>MOVIE_TITLE</column-name><br>
<sql-type>VARCHAR(256)</sql-type><br>
<jdbc-type>VARCHAR</jdbc-type><br>
</cmp-field><br>
<cmp-field><br>
<field-name>director</field-name><br>
<column-name>DIRECTOR</column-name><br>
<sql-type>VARCHAR(256)</sql-type><br>
<jdbc-type>VARCHAR</jdbc-type><br>
</cmp-field><br>
</entity></code></p>
<p><code> </enterprise-beans></code></p>
<p><code> </code></p>
<p><code><br>
</jaws><br>
</code></p>
<p>
<hr>
<a name="jboss_xml"></a>
<h4>jboss.xml</h4>
<p><code><?xml version="1.0"
encoding="Cp1252"?></code></p>
<p><code><jboss></code></p>
<p><code> <resource-managers><br>
<resource-manager
res-class="org.jboss.ejb.deployment.JDBCResource"><br>
<res-name>MovieDB</res-name><br>
<res-jndi-name>xa.MyConnectionPool</res-jndi-name><br>
</resource-manager><br>
</resource-managers></code></p>
<p><code> <enterprise-beans><br>
<entity><br>
<ejb-name>MyMovieBean</ejb-name><br>
<jndi-name>MyMovieBeanJNDIName</jndi-name><br>
<configuration-name>CMP
EntityBean</configuration-name><br>
</entity><br>
<session><br>
<ejb-name>MyMovieLibraryBean</ejb-name><br>
<jndi-name>MyMovieLibraryBeanJNDIName</jndi-name><br>
<configuration-name>Default Stateless SessionBean</configuration-name><br>
</session><br>
<secure>false</secure><br>
</enterprise-beans></code></p>
<p><code></jboss><br>
</code></p>
<p>
<hr>
<a name="ejb-jar_xml"></a>
<h4>ejb-jar.xml</h4>
<p><code><?xml version="1.0"?></code></p>
<p><code><!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems,
Inc.//DTD Enterprise JavaBeans 1.1//EN" "<a
href='http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd"'
??>http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd"</a>></code></p>
<p><code><ejb-jar></code></p>
<p><code>
<display-name>MyMovieDatabase</display-name><br>
<br>
<enterprise-beans></code></p>
<p><code> <entity><br>
<description>Models
a movie object</description><br>
<ejb-name>MyMovieBean</ejb-name><br>
<home>mypackage.MovieHome</home><br>
<remote>mypackage.Movie</remote><br>
<ejb-class>mypackage.MovieBean</ejb-class><br>
<persistence-type>Container</persistence-type><br>
<prim-key-class>mypackage.MoviePK</prim-key-class><br>
<reentrant>False</reentrant></code></p>
<p><code>
<resource-ref><br>
<description>Database</description><br>
<res-ref-name>MovieDB</res-ref-name><br>
<res-type>javax.sql.DataSource</res-type><br>
<res-auth>Container</res-auth><br>
</resource-ref><br>
</entity></code></p>
<p><code> <session><br>
<description>Models a movie
library</description><br>
<ejb-name>MyMovieLibraryBean</ejb-name><br>
<home>mypackage.MovieLibraryHome</home><br>
<remote>mypackage.MovieLibrary</remote><br>
<ejb-class>mypackage.MovieLibraryBean</ejb-class><br>
<ejb-ref><br>
<ejb-ref-name>movie/Movie</ejb-ref-name><br>
<ejb-ref-type>Entity</ejb-ref-type><br>
<home>mypackage.MovieHome</home><br>
<remote>mypackage.Movie</remote><br>
<ejb-link>mypackage.MovieBean</ejb-link><br>
</ejb-ref><br>
</session></code></p>
<p><code> </enterprise-beans></code></p>
<p><code> <assembly-descriptor><br>
<container-transaction><br>
<method><br>
<ejb-name>MyMovieBean</ejb-name><br>
<method-name>*</method-name><br>
</method><br>
<trans-attribute>Required</trans-attribute><br>
</container-transaction><br>
</assembly-descriptor><br>
<br>
</ejb-jar></code></p>
<p><code> </code></p>
<p>
<hr>
<a name="jboss_conf_xml"></a>
<h4>jboss.conf</h4>
<p><code><MLET CODE = "org.jboss.logging.Logger"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
</MLET><br>
<br>
<br>
<MLET CODE = "org.jboss.logging.ConsoleLogging"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"
VALUE="Information,Debug,Warning,Error"><br>
<ARG TYPE="java.lang.String"
VALUE="[{2}] {4}"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.util.ClassPathExtension"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"
VALUE="../../log/"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.util.Info"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
</MLET></code></p>
<p><code><MLET CODE = "org.jboss.util.ClassPathExtension"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"
VALUE="./"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.util.ClassPathExtension"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"
VALUE="../../db/"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.jdbc.JdbcProvider"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.web.WebProvider"
ARCHIVE="jboss.jar,dynaserver.jar" CODEBASE="../lib/ext/"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.naming.NamingProvider"
ARCHIVE="jnpserver.jar" CODEBASE="../lib/ext/"><br>
</MLET></code></p>
<p><code><MLET CODE =
"org.jboss.tm.TransactionManagerService" ARCHIVE="jboss.jar"
CODEBASE="../lib/ext/"><br>
</MLET></code></p>
<p><code><br>
<MLET CODE = "org.jboss.jdbc.XADataSourceLoader"
ARCHIVE="jboss.jar,minerva.jar,classes12_01.jar"
CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"
VALUE="TestPool"><br>
<ARG TYPE="java.lang.String"
VALUE="org.jboss.minerva.xa.XADataSourceImpl"><br>
<ARG TYPE="java.lang.String"
VALUE="jdbc:oracle:thin:@YOUR_DATABASE_SERVER:1521:orcl"><br>
<ARG TYPE="java.lang.String"
VALUE="USERNAME"><br>
<ARG TYPE="java.lang.String"
VALUE="PASSWORD"><br>
<ARG TYPE="java.lang.String"
VALUE=""><br>
<ARG TYPE="java.lang.Integer"
VALUE="2"><br>
<ARG TYPE="java.lang.Integer"
VALUE="5"><
BR> <ARGTYPE="java.lang.String"VALUE="GCEnabled=true;ShrinkingEnabled=true;GCMinIdleTime=30000;GCInterval=10000;ShrinkMinIdleTime=30000"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.ejb.ContainerFactory"
ARCHIVE="jboss.jar,jnpserver.jar,jxjboss.jar"
CODEBASE="../lib/ext/"><br>
</MLET></code></p>
<p><code><MLET CODE = "org.jboss.ejb.AutoDeployer"
ARCHIVE="jboss.jar"><br>
<ARG TYPE="java.lang.String"
VALUE="../deploy/"><br>
</MLET><br>
<br>
<MLET CODE = "org.jboss.jmx.server.JMXAdaptorService"
ARCHIVE="jboss.jar" CODEBASE="../lib/ext/"><br>
</MLET></code></p>
<p><code><MLET CODE =
"com.sun.jdmk.comm.HtmlAdaptorServer" ARCHIVE="jmxtools.jar"
CODEBASE="../lib/ext/"NAME="Adaptor:name=html,port=8082"><br>
</MLET><br>
</code>
</body>
</html>
1.1 jbossweb/mssql.htm
Index: mssql.htm
===================================================================
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive 4">
<title>jboss.xml</title>
</head>
<font face="arial,helvetica" size="6" color="#ffcc00">MS-SQL Howto (under
development) </font>
<p>This Howto is still under development we repost messages sent to the jboss
lists</p>
<p>MS-SQL with JDBC</p>
<p>==============</p>
<p>1) Copy your JDBC-jar file from inet to jboss /lib/ext directory<br>
</p>
<p>2) Start jBoss and check if the JDBC-jar file is loaded (it appears<br>
at the very beginning a list of jar-files loaded)<br>
</p>
<p>3) Add the JDBC driver class name in jboss.properties in the
jboss.drivers<br>
list<br>
</p>
<p>4) Start jBoss and check if the JDBC-driver is found (it appears at<br>
right after the list of jar-files loaded)<br>
</p>
<p>5) Add a <M-LET> tag to the jboss.conf, add the JDBC-jar in<br>
after the jboss.jar in this tag (everything within {} is to be replaced by<br>
your value inclusive the {}):<br>
</p>
<p><MLET CODE = "org.jboss.jdbc.DataSourceImpl"
ARCHIVE="jboss.jar,{your<br>
JDBC-jar file}" CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String" VALUE="{JDBC-url to the
DB}"><br>
<ARG TYPE="java.lang.String" VALUE="{datasource name like:
MsSQL}"><br>
<ARG TYPE="java.lang.String" VALUE="{JDBC-driver class
name}"><br>
<ARG TYPE="java.lang.String" VALUE="{User
name}"><br>
<ARG TYPE="java.lang.String"
VALUE="{Password}"><br>
</MLET><br>
</p>
<p>6) Start jBoss and check if a new DataSource is loaded (count them if
there<br>
is no output<br>
from the JDBC loading)<br>
</p>
<p>7) Start EJX (java -jar ejx.jar within the /bin directory)<br>
</p>
<p>8) Load your EJB jar file and select the JAWS.xml or create one<br>
</p>
<p>9) Insert MsSQL as datasource name ( or the datasource name you specifed<br>
in step 5)<br>
</p>
<p>10) Set the datatype mapping from the list below BUT<br>
now we have a problem because there is NO datatype mapping for<br>
MS SQL-Server but I will look this week for one or at least tell you how<br>
to create one. CAN someone tell me how?<br>
</p>
<p>11) Start jBoss and check if the output if the tables are created
(output<br>
starts with JAWS).</p>
<p></p>
<p>MS-SQL with JDBC-ODBC</p>
<p>====================</p>
<p>From: Steve Kwee <[EMAIL PROTECTED]><br>
To: "'jBoss'" <[EMAIL PROTECTED]><br>
Subject: AW: [jBoss-User] SQL Server<br>
Date: Tue, 27 Jun 2000 12:19:48 +0200<br>
Reply-To: "jBoss" <[EMAIL PROTECTED]><br>
Sender: <[EMAIL PROTECTED]><br>
<br>
<br>
At least, there is someone else, using MSSQL...<br>
Last night I put toghether this kind of readme on the topic.<br>
Works with a compiled version I took from the cvs a week ago.<br>
<br>
<br>
Using MS SQLServer with the JDBC-ODBC Bridge (included in JDK since 1.2.x)<br>
--------------------------------------------------------------------------<br>
Should also work for other ODBC Datasources<br>
<br>
<br>
1. Install ODBC Datasource <my_dsn><br>
<br>
2. Add sun.jdbc.odbc.JdbcOdbcDriver to jboss.properties:<br>
<br>
jdbc.drivers=org.hsql.jdbcDriver,jdbc.idbDriver,sun.jdbc.odbc.JdbcOdbcDriver<br>
<br>
<br>
3. Add MLet for Datasource in jboss.conf<br>
<MLET CODE = "org.jboss.jdbc.DataSourceImpl"
ARCHIVE="rt.jar"<br>
CODEBASE="../lib/ext/"><br>
<ARG TYPE="java.lang.String"
VALUE="jdbc:odbc:my_dsn"><br>
<ARG TYPE="java.lang.String" VALUE="my_dsn"><br>
<ARG TYPE="java.lang.String"
VALUE="sun.jdbc.odbc.JdbcOdbcDriver"><br>
<ARG TYPE="java.lang.String" VALUE="sa"><br>
<ARG TYPE="java.lang.String" VALUE=""><br>
</MLET><br>
<br>
4. Add Type-Mapping for MS SQLSERVER to the beans jaws.xml<br>
(was provided by Pedro Mota, maybe someone could add it to the<br>
cvs/defaultjaws.xml)<br>
<type-mapping><br>
<name>MS SQLSERVER</name><br>
<mapping><br>
<java-type>java.lang.Integer</java-type><br>
<jdbc-type>INTEGER</jdbc-type><br>
<sql-type>INTEGER</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Character</java-type><br>
<jdbc-type>CHAR</jdbc-type><br>
<sql-type>CHAR</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Short</java-type><br>
<jdbc-type>SMALLINT</jdbc-type><br>
<sql-type>SMALLINT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Double</java-type><br>
<jdbc-type>DOUBLE</jdbc-type><br>
<sql-type>DOUBLE</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Long</java-type><br>
<jdbc-type>DECIMAL</jdbc-type><br>
<sql-type>DECIMAL(20)</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.String</java-type><br>
<jdbc-type>VARCHAR</jdbc-type><br>
<sql-type>VARCHAR(256)</sql-type></p>
<p> </mapping><br>
<mapping><br>
<java-type>java.lang.Object</java-type><br>
<jdbc-type>IMAGE</jdbc-type><br>
<sql-type>IMAGE</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Byte</java-type><br>
<jdbc-type>TINYINT</jdbc-type><br>
<sql-type>TINYINT</sql-type> <br>
</mapping><br>
<mapping><br>
<java-type>java.sql.TimeStamp</java-type><br>
<jdbc-type>TIMESTAMP</jdbc-type><br>
<sql-type>TIMESTAMP</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.util.Date</java-type> <br>
<jdbc-type>DATETIME</jdbc-type><br>
<sql-type>DATETIME</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Boolean</java-type><br>
<jdbc-type>BIT</jdbc-type><br>
<sql-type>BIT</sql-type><br>
</mapping><br>
<mapping><br>
<java-type>java.lang.Float</java-type><br>
<jdbc-type>FLOAT</jdbc-type><br>
<sql-type>FLOAT</sql-type><br>
</mapping><br>
</type-mapping><br>
<br>
<br>
5. Edit your beans jaws.xml and tell your enterprise-beans to use<br>
</p>
<p>a) the MS SQLSERVER Type-Mapping with<br>
<type-mapping>MS SQLSERVER</type-mapping><br>
b) your Datasource<br>
<datasource>my_dsn</datasource><br>
<br>
<br>
This has been testet with the banktest and worked only "half".<br>
Jaws was able to init create the tables and to populate the table customers<br>
but failed to insert data into accounts.</p>
<p>//MF FIXME Test with the latest version
</html>
1.1 jbossweb/jndi_howto.html
Index: jndi_howto.html
===================================================================
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive 4">
<title>Specifying a name for deployment</title>
</head>
<font face="arial,helvetica" size="6" color="#ffcc00">How do I specify the
deployment name of my bean in jBoss? </font>
<p>You have coded your beans. You now want to deploy them and be able to
access them from your clients. </p>
<p></p>
<p><b>Standard behaviour of jboss</b></p>
<p>The simplest way to deploy your bean is to use the <em>ejb-jar.xml</em>
file to give it the same name you call it in the client. This is done in the
<tt><ejb-name></tt> tag for the bean. In this case you DON'T need a
<em>jboss.xml</em> file. Your <em>ejb-jar.xml</em> file will look like this (this is
covered in the beginners trails):</p>
<p><em>ejb-jar.xml</em>:
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre><ejb-jar>
<enterprise-beans>
<session>
<b> <ejb-name>MyBeanName</ejb-name></b>
<home>MyBeanHome</home>
<remote>MyBean</remote>
<ejb-class>MyBeanEJB</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
...
</ejb-jar></pre>
</td>
</tr>
</table>
</p>
<p></p>
<p>And your bean will be available under the "MyBeanName" in
JNDI.</p>
<p>In your client code, your call will look like this:</p>
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre>public class Client {
...
public static void main(String arg[]) {
...
//No need to use the "narrow" operation, a cast will work in jboss
MyBeanHome home = (MyBeanHome) new
InitialContext().lookup("<b>MyBeanName</b>");
...
}
}</pre>
</td>
</tr>
</table>
</p>
<p>Here the <tt>"MyBeanName"</tt> refers to the name of your bean in
the jndi namespace. jBoss does not currently allow you to use the
<tt>java:comp/env</tt> namespace to call your beans from your clients.</p>
<p></p>
<p><b>If you want to give a jndi deployment name different than the
ejb-name</b></p>
<p>You may want to deploy your bean under another jndi name. (for example, you
may want to deploy the same bean under different names with different configurations).
In this case, you must specify the jndi name in a <em>jboss.xml</em> file. This file
must be in the <em>META-INF</em> directory, along with <em>ejb-jar.xml</em>. Your
files will look like this (note that the <tt><ejb-name></tt> tags in the two xml
files must match):</p>
<p><em>jboss.xml</em>:</p>
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre><jboss>
<enterprise-beans>
<session>
<b> <ejb-name>MyBeanName</ejb-name></b>
<b> <jndi-name>somePath/otherName</jndi-name></b>
</session>
<enterprise-beans>
</jboss></pre>
</td>
</tr>
</table>
</p>
<p>(you don't need to specify the rest of the jboss.xml file, only this
information is sufficient in the new metadata, this is what we call
"differential" jboss.xml).</p>
<p>Your bean is then available in JNDI under <b>somePath/otherName</b></p>
<p>In your client code, your call will look like this:</p>
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre>public class Client {
...
public static void main(String arg[]) {
...
//No need to use the "narrow" operation, a cast will work in jboss
MyBeanHome home = (MyBeanHome) new
InitialContext().lookup("<b>somePath/otherName</b>");
...
}
}</pre>
</td>
</tr>
</table>
</p>
<p></ul>
<hr>
Author: <a href="mailto:[EMAIL PROTECTED]">Sébastien
Alborini</a></body>
</html>
1.1 jbossweb/jbuilder.htm
Index: jbuilder.htm
===================================================================
How to Run jBoss in JBuilder's Debugger<br>
<br>
This has been tested with jBoss 2.0 PR2-PR4, Win 98, and JBuilder<br>
Foundation 3.5<br>
<br>
With each of these, replace <JBOSS-HOME> with the location of<br>
your jBoss directory, for example, C:\jboss.<br>
<br>
1. Launch JBuilder.<br>
<br>
2. Go to Project|Properties, click the Paths tab, and make sure<br>
you're using JDK 1.3 as your JDK. To have 1.3 available, you<br>
may need to add it or change your default JDK. First install<br>
JDK 1.3 (from Sun) on your PC, then point JBuilder to it by<br>
clicking "new" or "edit" in the Select a JDK dialog.<br>
<br>
3. On the Paths tab, go to the Required Libraries tab, click "add"<br>
and then "new" to create a new one, and call it "jBoss
Server"<br>
(or something similar). Add the following .jar file:<br>
<br>
<JBOSS-HOME>\bin\run.jar<br>
<br>
4. Click OK on the Edit library dialog, then OK on the Select one<br>
or more libraries dialog, which should add the new library to<br>
your project. The library will now be available to other projects<br>
as well.<br>
<br>
5. Go to the Run tab of the Project Properties dialog. On the<br>
Application tab, set the main class to org.jboss.Main. Note<br>
that this is project-specific and will need to be done for each<br>
project running jBoss.<br>
<br>
6. Click OK and close JBuilder.<br>
<br>
7. Create a copy of your JBuilder shortcut (in Win98, it should be<br>
in C:\WINDOWS\Start Menu\Programs\JBuilder 3.5). Rename the<br>
copy to something appropriate, such as "JBuilder with<br>
jBoss working directory".<br>
<br>
8. Edit the shortcut's properties by right-clicking and choosing<br>
properties. Change the "Start in" folder to
<JBOSS-HOME>\bin\.<br>
Click OK.<br>
<br>
9. To run or debug jBoss within JBuilder, first use the modified<br>
shortcut to launch JBuilder, then open your project as normal<br>
and select Run|Run Project or Run|Debug Project.<br>
<br>
10. To debug EJBs within this setup, first build and deploy them<br>
in <JBOSS-HOME>\deploy as you would normally. Then set<br>
breakpoints in your EJB code and debug the project using<br>
org.jboss.Main as the main class using the instructions above.<br>
<br>
NOTE: When running jBoss within JBuilder, it will launch an<br>
empty console window with "java" as the title. I'm not sure why<br>
this is, but it appears to have some relation to Hypersonic SQL.<br>
You will probably need to close this window manually after stopping<br>
jBoss.
<p>
1.1 jbossweb/jbossxml_howto.html
Index: jbossxml_howto.html
===================================================================
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive 4">
<title>jboss.xml</title>
</head>
<font face="arial,helvetica" size="6" color="#ffcc00">What is
<em>jboss.xml</em>? </font>
<p>To deploy your beans, you have to specify (nearly) everything about them in
a file called <em>ejb-jar.xml</em>. This file will be stored in the <em>META-INF</em>
directory in your ejb-jar file. The content and syntax of this file in specified in
the ejb1.1 specification (16.5 Deployment descriptor DTD, pp 244-259).<br>
An important point is that the specification does not allow you to add
vendor-specific configuration in this file. While the <em>ejb-jar.xml</em> is
sufficient for most applications, there may be cases where you want to add
jBoss-specific information in your deployment descriptor. This can be done by
providing a <em>jboss.xml</em> in the <em>META-INF</em> directory.</p>
<p>Note that this file is almost NEVER required by jBoss: jBoss will always
provide a standard behaviour when no <em>jboss.xml</em> file is found. jBoss does that
by first processing a <em>standardjboss.xml</em> file which contains the standard
configuration.</p>
<p>This is what you CAN do in your <em>jboss.xml</em> file:</p>
<ul>
<li>Specifying a particular jndi name for deployment. See the <a
href="jndi_howto.html">jndi howto</a>
<li>Declare external ejb references. See the <a
href="ejbref_howto.html">ejb-ref howto</a>
<li>Declare resource managers. See the resource manager howto (TBD).
<li>Customize the container configuration for your beans. See the <a
href="contconf_howto.html">container configuration howto</a>.
<li>Get all the skinny in gorry details: <a
href="jboss.dtd">jboss.xml DTD</a>
</ul>
<p>
<hr>
Author: <a href="mailto:[EMAIL PROTECTED]">Sébastien
Alborini</a></body>
</html>
1.1 jbossweb/jboss.dtd
Index: jboss.dtd
===================================================================
<!--
Overview of the architecture of jboss.xml
<jboss>
<secure />
<enterprise-beans>
<entity>
<ejb-name />
<jndi-name />
<resource-ref>
<res-ref-name />
<resource-name />
</resource-ref>
</entity>
<session>
<ejb-name />
<jndi-name />
<resource-ref>
<res-ref-name />
<resource-name />
</resource-ref>
</session>
</enterprise-beans>
<resource-managers>
<resource-manager>
<res-name />
<res-jndi-name />
</resource-manager>
<resource-manager>
<res-name />
<res-url />
</resource-manager>
</resource-managers>
<container-configurations>
<container-configuration>
<container-name />
<container-invoker />
<instance-pool />
<instance-cache />
<persistence-manager />
<transaction-manager />
<container-invoker-conf />
<container-cache-conf />
<container-pool-conf />
</container-configuration>
</container-configurations>
</jboss>
-->
<!--
The jboss element is the root element of the jboss.xml file. It
contains all the information used by jboss but not described in the
ejb-jar.xml file. All of it is optional.
1- the application assembler can define custom container configurations
for the beans. Standard configurations are provided in standardjboss.xml
2- the deployer can override the jndi names under which the beans are
deployed
3- the deployer can specify runtime jndi names for resource managers.
-->
<!ELEMENT jboss (secure?, enterprise-beans?, resource-managers?,
container-configurations?)>
<!--
The secure element tells the container to enforce ejb1.1 restrictions
It must be one of the following :
<secure>true</secure>
<secure>false</secure>
Used in: jboss
-->
<!ELEMENT secure (#PCDATA)>
<!--
The enterprise-beans element contains additional information about
the beans. These informations, such as jndi names, resource managers and
container configurations, are specific to jboss and not described in
ejb-jar.xml.
jboss will provide a standard behaviour if no enterprise-beans element
is found, see container-configurations, jndi-name and resource-managers
for defaults.
Used in: jboss
-->
<!ELEMENT enterprise-beans (session | entity)+>
<!--
The entity element holds information specific to jboss and not declared
in ejb-jar.xml about an entity bean, such as jndi name, container
configuration, and resource managers. (see tags for details)
The bean should already be declared in ejb-jar.xml, with the same
ejb-name.
Used in: enterprise-beans
-->
<!ELEMENT entity (ejb-name, jndi-name?, configuration-name?,
ejb-ref*, resource-ref*)>
<!--
The session element holds information specific to jboss and not declared
in ejb-jar.xml about a session bean, such as jndi name, container
configuration, and resource managers. (see tags for details)
The bean should already be declared in ejb-jar.xml, with the same
ejb-name.
Used in: enterprise-beans
-->
<!ELEMENT session (ejb-name, jndi-name?, configuration-name?,
ejb-ref*, resource-ref*)>
<!--
The ejb-name element gives the name of the bean, it must correspond to
an ejb-name element in ejb-jar.xml
Used in: entity and session
-->
<!ELEMENT ejb-name (#PCDATA)>
<!--
The jndi-name element gives the actual jndi name under which the bean will
be deployed. It is provided by the deployer. If not, jboss will assume
"jndi-name" = "ejb-name"
Used in: entity and session
-->
<!ELEMENT jndi-name (#PCDATA)>
<!--
The configuration-name element gives the name of the container
configuration for this bean. It must match one of the container-name
tags in the container-configurations section, or one of the standard
configurations. If none is provided, jboss will automatically use the
right standard configuration, see container-configurations.
Used in: entity and session
-->
<!ELEMENT configuration-name (#PCDATA)>
<!--
The ejb-ref element is used to give the jndi-name of an external
ejb reference. In the case of an external ejb reference, you don't
provide a ejb-link element in ejb-jar.xml, but you provide a jndi-name
in jboss.xml
Used in: entity, session
-->
<!ELEMENT ejb-ref (ejb-ref-name, jndi-name)>
<!--
The ejb-ref-name element is the name of the ejb reference as given in
ejb-jar.xml.
Used in: ejb-ref
-->
<!ELEMENT ejb-ref-name (#PCDATA)>
<!--
The jndi-name element gives the deployed name of the reference. The
general form is
<jndi-name>t3://otherserver/application/beanB</jndi-name>
Used in: ejb-ref
-->
<!ELEMENT jndi-name (#PCDATA)>
<!--
The resource-ref element gives a mapping between the "code name"
of a resource (res-ref-name, provided by the Bean Developper) and
its "xml name" (resource-name, provided by the Application Assembler).
If no resource-ref is provided, jboss will assume that
"xml-name" = "code name"
See resource-managers.
Used in: resource-ref
-->
<!ELEMENT resource-ref (res-ref-name, resource-name)>
<!--
The res-ref-name element gives the "code name" of a resource. It is
provided by the Bean Developper. See resource-managers for the actual
configuration of the resource.
Used in: resource-ref
-->
<!ELEMENT res-ref-name (#PCDATA)>
<!--
The resource-name element gives the "xml name" of the resource. It is
provided by the Application Assembler. See resource-managers for the
actual configuration of the resource.
Used in: resource-ref
-->
<!ELEMENT resource-name (#PCDATA)>
<--
The resource-managers element is used to declare resource managers.
A resource has 3 names:
- the "code name" is the name used in the code of the bean, supplied by
the Bean Developper in the resource-ref section of the ejb-jar.xml file
- the "xml name" is an intermediary name used by the Application Assembler
to identify resources in the XML file.
- the "runtime jndi name" is the actual jndi-name / url of the deployed
resource, it is supplied by the Deployer.
The mapping between the "code name" and the "xml name" is given
in the resource-ref section for the bean. If not, jboss will assume that
"xml name" = "code name".
The mapping between the "xml name" and the "runtime jndi name" is given in
a resource-manager section. If not, and if the datasource is of type
javax.sql.DataSource, jboss will look for a javax.sql.DataSource in the jndi
tree.
Used in: jboss
-->
<!ELEMENT resource-managers (resource-manager*)>
<!--
The resource-manager element is used to provide a mapping between the
"xml name" of a resource (res-name) and its "runtime jndi name"
(res-jndi-name or res-url according to the type of the resource).
If it is not provided, and if the type of the resource is
javax.sql.DataSource, jboss will look for a javax.sql.DataSource in the
jndi tree.
See resource-managers.
Used in: resource-managers
-->
<!ELEMENT resource-manager (res-name, (res-jndi-name | res-url)>
<!--
The res-name element gives the "xml name" of a resource, it is provided
by the Application Assembler. See resource-managers.
Used in: resource-manager
-->
<!ELEMENT res-name (#PCDATA)>
<!--
The res-jndi-name element is the "deployed jndi name" of a resource, it
is provided by the Deployer. See resource-managers.
Used in: resource-manager
-->
<!ELEMENT res-jndi-name (#PCDATA)>
<!--
The res-url element is the "runtime jndi name" as a url of the resource.
It is provided by the Deployer. See resource-managers.
Used in: resource-manager
-->
<!ELEMENT res-url (#PCDATA)>
<!--
The container-configurations element declares the different possible
container configurations that the beans can use. standardjboss.xml
provides 4 standard configurations with the following container-names:
- Standard CMP EntityBean
- Standard BMP EntityBean
- Standard Stateless SessionBean
- Standard Stateful SessionBean
These standard configurations will automatically be used if no custom
configuration is specified.
The application assembler can define advanced custom configurations here.
Used in: jboss
-->
<!ELEMENT container-configurations (container-configuration*)>
<!--
The container-configuration element describes a configuration for the
container.
The different plugins to use are declared here, as well as their
configurations. The configuration-class attribute is no longer used.
Used in: container-configurations
-->
<!ELEMENT container-configuration (container-name, call-logging,
container-invoker, instance-pool?, instance-cache?, persistence-manager?,
transaction-manager?, container-invoker-conf?, container-cache-conf?,
container-pool-conf?, commit-option?)>
<!--
The container-name element gives the name of the configuration being
defined. Beans may refer to this name in their configuration-name tag.
Used in: container-configuration
-->
<!ELEMENT container-name (#PCDATA)>
<!--
The call-logging element tells if the container must log every method
invocation for this bean or not. Its value must be trus or false.
Used in: container-configuration
-->
<!ELEMENT call-logging (#PCDATA)>
<!--
The container-invoker element gives the class name of the container
invoker jboss must use for in this configuration. This class must
implement the org.jboss.ejb.ContainerInvoker interface. The default is
org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker, it may be
changed to org.jboss.ejb.plugins.jrmp12.server.JRMPContainerInvoker if
no 1.3 VM is available
Used in: container-configuration
-->
<!ELEMENT container-invoker (#PCDATA)>
<!--
The instance-pool element gives the class name of the instance pool
jboss must use for in this configuration. This class must implement
the org.jboss.ejb.InstancePool interface. The defaults are:
- org.jboss.ejb.plugins.EntityInstancePool for entity beans
- org.jboss.ejb.plugins.StatelessSessionInstancePool for stateless
session beans.
- no pool is used for stateful session beans
Used in: container-configuration
-->
<!ELEMENT instance-pool (#PCDATA)>
<!--
The instance-cache element gives the class name of the instance cache
jboss must use for in this configuration. This class must implement
the org.jboss.ejb.InstanceCache interface. The defaults are:
- org.jboss.ejb.plugins.NoPassivationEntityInstanceCache for entity beans
- org.jboss.ejb.plugins.NoPassivationStatefulSessionInstanceCache for
stateful session beans.
- no cache is used for stateless session beans
Used in: container-configuration
-->
<!ELEMENT instance-cache (#PCDATA)>
<!--
The persistence-manager element gives the class name of the persistence
manager / persistence store jboss must use for in this configuration.
This class must implement:
- org.jboss.ejb.EntityPersistenceStore for CMP Entity Beans (default is
org.jboss.ejb.plugins.jaws.JAWSPersistenceManager)
- org.jboss.ejb.EntityPersistenceManager for BMP entity beans (default
is org.jboss.ejb.plugins.BMPPersistenceManager)
- org.jboss.ejb.StatefulSessionPersistenceManager for stateless session
beans.
- no persistence-manager is used for stateless session beans
Used in: container-configuration
-->
<!ELEMENT persistence-manager (#PCDATA)>
<!--
The transaction-manager element gives the class name of the transaction
manager jboss must use for in this configuration. This class must implement
the javax.transaction.TransactionManager interface. The default is
org.jboss.tm.TxManager.
Used in: container-configuration
-->
<!ELEMENT transaction-manager (#PCDATA)>
<!--
The container-invoker-conf element holds configuration data for the
container invoker.
jboss does not read directly the subtree for this element: instead,
it is passed to the container invoker instance (if it implements
org.jboss.metadata.XmlLoadable) for it to load its parameters.
The Optimized tag described here only relates to the default container
invoker, JRMPContainerInvoker.
Used in: container-configuration
-->
<!ELEMENT container-invoker-conf (Optimized)>
<!--
This element is only valid if the container invoker is
JRMPContainerInvoker.
The Optimized element tells if the container invoker to bypass RMI layers
when the client is local (same VM as the server). This optimizes RMI calls.
Its value must be true or false.
Used in: container-invoker-conf for JRMPContainerInvoker
-->
<!ELEMENT Optimized (#PCDATA)>
<!--
The container-cache-conf element holds dynamic configuration data
for the instance cache.
jboss does not read directly the subtree for this element: instead,
it is passed to the instance cache instance (if it implements
org.jboss.metadata.XmlLoadable) for it to load its parameters.
The default instance caches, NoPassivationEntityInstanceCache and
NoPassivationStatefulSessionInstanceCache, have no configuration
available.
Used in: container-configuration
-->
<!ELEMENT container-cache-conf>
<!--
The container-pool-conf element holds configuration data for the
instance pool.
jboss does not read directly the subtree for this element: instead,
it is passed to the instance pool instance (if it implements
org.jboss.metadata.XmlLoadable) for it to load its parameters.
The default instance pools, EntityInstancePool and
StatelessSessionInstancePool, both accept the following MaximumSize
configuration.
Used in: container-configuration
-->
<!ELEMENT container-pool-conf (MaximumSize)>
<!--
This element is only valid if the instance pool is a subclass of
AbstractInstancePool.
The MaximumSize element gives the maximum number of instance to
keep in the pool. Its value must be an integer.
Used in: container-pool-conf for AbstractInstancePool subclasses
-->
<!ELEMENT MaximumSize (#PCDATA)>
<!--
This option is only used for entity container configurations.
The commit-option element tells the container which option to use for
transactions.
Its value must be A, B or C.
- option A: the entiry instance has exclusive access to the database. The
instance
stays ready after a transaction.
- option B: the entity instance does not have exclusive access to the
database.
The state is loaded before the next transaction.
- option C: same as B, except the container does not keep the instance after
commit:
a passivate is immediately performed after the commit.
See ejb1.1 specification for details (p118).
Used in: container-configuration
-->
<!ELEMENT commit-option (#PCDATA)>
1.1 jbossweb/ejbref_howto1.html
Index: ejbref_howto1.html
===================================================================
<html>
<head>
<title>
Declaring an ejb reference
</title>
</head>
<font face=arial,helvetica size=+3 color="#ffcc00">
How can I declare an ejb reference in jBoss?
</font>
<p>An ejb reference (see ejb1.1 specification, 14.3, p207) is when a bean A wants to
call methods on a bean B.Bean A can now call bean B. This call will look like this:
(you must use the <tt>java:comp/env</tt> namespace).
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
public class ABean implements EntityBean {
...
public void BusinessMethod(...) {
...
Context ctx = new InitialContext();
BHome home = (BHome)ctx.lookup("java:comp/env/ejb/myBean");
B bean = home.create(pk);
...
}
}
</pre></td></tr></table></p>
To be allowed this call, the bean A must declare it in the its deployment
descriptor. This is done by an <tt><ejb-ref></tt> tag in the bean section of
the <em>ejb-jar.xml</em> file. 2 cases may occur:
<ul>
<li><b>Internal ejb reference</b>: the bean B is in the same application unit as the
bean A. In this case, you must provide the <ejb-link> tag, and its value must match
the <ejb-name> of bean B. You don't have to provide anything in the jboss.xml file.
Your <em>ejb-jar.xml</em> file will look like this:
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<home>AHome</home>
<remote>A</remote>
<ejb-class>ABean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<ejb-ref>
<ejb-ref-name>ejb/myBean</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>BHome</home>
<remote>B</remote>
<b> <ejb-link>Bean B</ejb-link></b>
</ejb-ref>
</session>
<entity>
<b> <ejb-name>Bean B</ejb-name></b>
<home>BHome</home>
<remote>B</remote>
<ejb-class>BBean</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>myPK</prim-key-class>
<reentrant>True</reentrant>
</entity>
</enterprise-beans>
...
</ejb-jar>
</pre></td></tr></table></p>
<li><b>External ejb reference</b>: the bean B comes from another application unit,
it may even be deployed on another server. In this case, you must not provide the
<ejb-link> tag in ejb-jar.xml. Instead, you must provide the full jndi name of the
bean B in jboss.xml. A full name is of the form
<pre>protocol://host:1234/name/in/other/server</pre>
Note that the <tt><ejb-ref-name></tt> tags in the 2 xml files must match.
<p>
<em>ejb-jar.xml</em>:</p>
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<home>AHome</home>
<remote>A</remote>
<ejb-class>ABean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<ejb-ref>
<b> <ejb-ref-name>ejb/myBean</ejb-ref-name>
</b> <ejb-ref-type>Entity</ejb-ref-type>
<home>BHome</home>
<remote>B</remote>
</ejb-ref>
</session>
</enterprise-beans>
...
</ejb-jar>
</pre></td></tr></table></p>
<em>jboss.xml</em>:
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<ejb-ref>
<b> <ejb-ref-name>ejb/myBean</ejb-ref-name>
<jndi-name>t3://otherserver/application/beanB</jndi-name>
</b> </ejb-ref>
</session>
<enterprise-beans>
</jboss>
</pre></td></tr></table></p>
<p>If bean B is deployed in another application, but on the same jboss server, the
jndi-name you provide must be the name under which bean B is deployed (see the <a
href="jndi_howto.html">jndi_howto</a>)</p>
</ul>
<hr>Author: <a href="mailto:[EMAIL PROTECTED]">S�bastien Alborini</a>
</body>
</html>
1.1 jbossweb/ejbref_howto.html
Index: ejbref_howto.html
===================================================================
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive 4">
<title>Declaring an ejb reference</title>
</head>
<font face="arial,helvetica" size="6" color="#ffcc00">How can I declare an ejb
reference in jBoss? </font>
<p>An ejb reference (see ejb1.1 specification, 14.3, p207) is when a bean A
wants to call methods on a bean B. We are talking about intra-bean calls also called
B2B calls. This is not for clients (that is covered in the beginner trails) this is
for bean calls all on the server. Most of these calls are done inside the server
VM.</p>
<p>This call will look like this: (beans running on the server must use the
<tt>java:comp/env</tt> namespace).</p>
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre>public class ABean implements EntityBean {
...
public void BusinessMethod(...) {
...
BHome home = (BHome)ctx.lookup("java:comp/env/ejb/myBean");
B bean = home.create(pk);
...
}
}</pre>
</td>
</tr>
</table>
</p>
<p>To be allowed this call, the bean A must declare it in the its deployment
descriptor. This is done by an <tt><ejb-ref></tt> tag in the bean section of the
<em>ejb-jar.xml</em> file. 2 cases may occur:
<ul>
<li><b>Internal ejb reference</b>: the bean B is in the same
application unit as the bean A. This means that the beans are physically packaged in
the same jar. In this case, you must provide the<ejb-link>tag, and its value must
match the<ejb-name>of bean B. You don't have to provide anything in the jboss.xml
file. Your <em>ejb-jar.xml</em> file will look like this:
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre><ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<home>AHome</home>
<remote>A</remote>
<ejb-class>ABean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<ejb-ref>
<ejb-ref-name>ejb/myBean</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>BHome</home>
<remote>B</remote>
<b> <ejb-link>Bean B</ejb-link></b>
</ejb-ref>
</session>
<entity>
<b> <ejb-name>Bean B</ejb-name></b>
<home>BHome</home>
<remote>B</remote>
<ejb-class>BBean</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>myPK</prim-key-class>
<reentrant>True</reentrant>
</entity>
</enterprise-beans>
...
</ejb-jar></pre>
</td>
</tr>
</table>
</p>
<li><b>External ejb reference</b>: the bean B comes from another
application unit, it may even be deployed on another server. This means that the
beans live in different jars on different systems. In this case, you cannot rely on
the standard <ejb-link> tag in ejb-jar.xml since there the beans are not covered in
the same file. Instead, you must provide the full jndi name of the bean B in
jboss.xml. This is necessary to map the names from different ejb-jar.xml files since
the 2 beans are defined in different application units. A full name is of the form
<pre>protocol://host:1234/name/in/other/server</pre>
<p>Note that the <tt><ejb-ref-name></tt> tags in the 2 xml files
must match.
<p><em>ejb-jar.xml</em>:</p>
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre><ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<home>AHome</home>
<remote>A</remote>
<ejb-class>ABean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<ejb-ref>
<b> <ejb-ref-name>ejb/myBean</ejb-ref-name></b>
<ejb-ref-type>Entity</ejb-ref-type>
<home>BHome</home>
<remote>B</remote>
</ejb-ref>
</session>
</enterprise-beans>
...
</ejb-jar></pre>
</td>
</tr>
</table>
</p>
<p><em>jboss.xml</em>:
<p>
<table border="0" bgcolor="#80ff80" cellspacing="4">
<tr>
<td>
<pre><jboss>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<ejb-ref>
<b> <ejb-ref-name>ejb/myBean</ejb-ref-name></b>
<b> <jndi-name>t3://otherserver/application/beanB</jndi-name></b>
</ejb-ref>
</session>
<enterprise-beans>
</jboss></pre>
</td>
</tr>
</table>
</p>
<p>If bean B is deployed in another application, but on the same jboss
server, the jndi-name you provide must be the name under which bean B is deployed (see
the <a href="jndi_howto.html">jndi_howto</a>)</p>
</ul>
<p>
<hr>
Author: <a href="mailto:[EMAIL PROTECTED]">Sébastien
Alborini</a></body>
</html>
1.1 jbossweb/datasource.htm
Index: datasource.htm
===================================================================
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive 4">
<title>Adding a Data Source to jBoss 2</title>
<meta name="ProgId" content="Word.Document">
<meta name="Originator" content="Microsoft Word 9">
<link rel="File-List" href="datasource_files/filelist.xml">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>lturner</o:Author>
<o:Template>Normal</o:Template>
<o:LastAuthor>marc fleury</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>6</o:TotalTime>
<o:LastPrinted>2000-05-04T23:22:00Z</o:LastPrinted>
<o:Created>2000-09-01T21:46:00Z</o:Created>
<o:LastSaved>2000-09-01T21:46:00Z</o:LastSaved>
<o:Pages>2</o:Pages>
<o:Words>617</o:Words>
<o:Characters>3520</o:Characters>
<o:Company>Gilchrist Bros Ltd</o:Company>
<o:Lines>29</o:Lines>
<o:Paragraphs>7</o:Paragraphs>
<o:CharactersWithSpaces>4322</o:CharactersWithSpaces>
<o:Version>9.2720</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
<w:UseMarginsForDrawingGridOrigin/>
<w:Compatibility>
<w:FootnoteLayoutLikeWW8/>
<w:ShapeLayoutLikeWW8/>
<w:AlignTablesRowByRow/>
<w:ForgetLastTabAlignment/>
<w:LayoutRawTableWidth/>
<w:LayoutTableRowsApart/>
</w:Compatibility>
</w:WordDocument>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
<style><!--
div.msonormal { font-size: 10pt; font-family: "Times New Roman"; margin: 0in 0in
0pt; mso-ansi-language: : EN-GB; mso-fareast-font-family: : "Times New Roman";
mso-pagination: : widow-orphan; mso-style-parent: : "" }
div.section1 { page: : Section1 }
h1 { font-size: 14pt; font-family: Arial; margin: 12pt 0in 3pt; mso-ansi-language: :
EN-GB; mso-bidi-font-family: : "Times New Roman"; mso-bidi-font-size: : 10.0pt;
mso-bidi-font-weight: : normal; mso-font-kerning: : 14.0pt; mso-outline-level: : 1;
mso-pagination: : widow-orphan; mso-style-next: : Normal; page-break-after: : avoid }
h2 { font-style: italic; font-size: 12pt; font-family: Arial; margin: 12pt 0in 3pt;
mso-ansi-language: : EN-GB; mso-bidi-font-family: : "Times New Roman";
mso-bidi-font-size: : 10.0pt; mso-bidi-font-style: : normal; mso-bidi-font-weight: :
normal; mso-outline-level: : 2; mso-pagination: : widow-orphan; mso-style-next: :
Normal; page-break-after: : avoid }
li.msonormal { font-size: 10pt; font-family: "Times New Roman"; margin: 0in 0in 0pt;
mso-ansi-language: : EN-GB; mso-fareast-font-family: : "Times New Roman";
mso-pagination: : widow-orphan; mso-style-parent: : "" }
ol { margin-bottom: 0in }
p.msonormal { font-size: 10pt; font-family: "Times New Roman"; margin: 0in 0in 0pt;
mso-ansi-language: : EN-GB; mso-fareast-font-family: : "Times New Roman";
mso-pagination: : widow-orphan; mso-style-parent: : "" }
ul { margin-bottom: 0in }-->
</style>
</head>
<body lang="EN-US" style="tab-interval:.5in">
<div class="Section1">
<h1><span lang="EN-GB">Adding a Data Source to jBoss
2</span></h1>
<h1></h1>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">This section will detail how to add a data source to the jBoss 2
server.<span style="mso-spacerun: yes"> </span>Version 2 of the jBoss server
supports multiple data sources within the one server (unlike version 1).<span
style="mso-spacerun: yes"> </span>The whole management of these data sources
(along with the rest of the server) is done through the Java Management Extension
(JMX) and as a result, the JMX documentation also applies to jBoss version
2.</span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">The server including the data sources is created using a JMX MLet, which
loads the configuration from the /conf/jboss.conf file.<span style="mso-spacerun:
yes"> </span>The MLet sections that you need are the ones that use
‘org.jboss.jdbc.DataSourceImpl’ in the CODE tag.<span style="mso-spacerun:
yes"> </span>The following are taken from the /conf/jboss.conf file which are
installed with the server.</span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<p class="MsoNormal" style="margin-right:-52.15pt"><span
lang="EN-GB"><MLET CODE = "org.jboss.jdbc.DataSourceImpl"
ARCHIVE="jboss.jar,idb.jar" CODEBASE="../lib/ext/"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String"
VALUE="jdbc:idb:../conf/instantdb.properties"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String"
VALUE="InstantDB"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String"
VALUE="jdbc.idbDriver"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String" VALUE=""></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String" VALUE=""></span></p>
<p class="MsoNormal"><span
lang="EN-GB"></MLET></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span></span></p>
<p class="MsoNormal" style="margin-right:-45.05pt"><span
lang="EN-GB"><MLET CODE = "org.jboss.jdbc.DataSourceImpl"
ARCHIVE="jboss.jar,hsql.jar" CODEBASE="../lib/ext/"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String"
VALUE="jdbc:HypersonicSQL:hsql://localhost"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String"
VALUE="Hypersonic"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String"
VALUE="org.hsql.jdbcDriver"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String" VALUE="sa"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><span
style="mso-tab-count:1">
</span><ARG TYPE="java.lang.String" VALUE=""></span></p>
<p class="MsoNormal"><span
lang="EN-GB"></MLET></span></p>
<p class="MsoNormal"></p>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">It is these sections that replace the information in the
system.properties file from jBoss 1.<span style="mso-spacerun: yes"> </span>Each
tag in the MLet will be described below:</span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<p>
<table border="0" cellspacing="0" cellpadding="0"
style="border-collapse:collapse;
mso-padding-alt:0in 5.4pt 0in 5.4pt">
<tr>
<td width="92" valign="top"
style="width:69.2pt;padding:0in 5.4pt 0in 5.4pt">
<p class="MsoNormal"
style="text-align:justify"><span lang="EN-GB"><b style="mso-bidi-font-weight:
normal">CODE</b></span></td>
<td width="476" valign="top"
style="width:357.2pt;padding:0in 5.4pt 0in 5.4pt">
<p class="MsoNormal"
style="text-align:justify"><span lang="EN-GB">This tells jBoss what the MLet section
is.<span style="mso-spacerun: yes"> </span>In the case of a data source, it uses
the org.jboss.jdbc.DataSourceImpl class.</span></td>
</tr>
<tr>
<td width="92" valign="top"
style="width:69.2pt;padding:0in 5.4pt 0in 5.4pt">
<p class="MsoNormal"
style="text-align:justify"><span lang="EN-GB"><b style="mso-bidi-font-weight:
normal">ARCHIVE</b></span></td>
<td width="476" valign="top"
style="width:357.2pt;padding:0in 5.4pt 0in 5.4pt">
<p class="MsoNormal"
style="text-align:justify"><span lang="EN-GB">This tells the server where to look for
drivers for the data source.<span style="mso-spacerun: yes"> </span>Jboss.jar
needs to be in every data source, but the second jar is dependent on the data source
you are adding.<span style="mso-spacerun: yes"> </span>The archives need
to be in the classpath.</span></td>
</tr>
<tr>
<td width="92" valign="top"
style="width:69.2pt;padding:0in 5.4pt 0in 5.4pt">
<p class="MsoNormal"
style="text-align:justify"><span lang="EN-GB"><b style="mso-bidi-font-weight:
normal">CODEBASE</b></span></td>
<td width="476" valign="top"
style="width:357.2pt;padding:0in 5.4pt 0in 5.4pt">
<p class="MsoNormal"
style="text-align:justify"><span lang="EN-GB">This tells the server where to look for
the archives in the previous tag.</span></td>
</tr>
</table>
<p class="MsoNormal" style="text-align:justify"></p>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">The arguments (ARG) provide the JDBC specific information to connect to
your data source.<span style="mso-spacerun: yes"> </span>The top one is the
database URL, the second one is the JNDI name for the data source (you can choose this
– no spaces), the third one is the JDBC driver class name and the forth and fifth
are the username and password to connect to your data source.</span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">Add the relevant information relating to your data source to the
/conf/jboss.conf file and save it.<span style="mso-spacerun: yes"> </span>The
next stage is to tell the jBoss to load the JDBC drivers.<span style="mso-spacerun:
yes"> </span>To do this you must place the driver archive in the jBoss
classpath.<span style="mso-spacerun: yes"> </span>In jBoss 2 this is really
easy.<span style="mso-spacerun: yes"> </span>All you have to do is put the
archive in the /lib/ext directory as all the jar files in this directory are
automatically added to the classpath for you (cool or what).</span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">The way you tell jBoss 2 to load the JDBC driver is to add the driver
class to the /conf/jboss.properties file.<span style="mso-spacerun: yes">
</span>The line in the file that tells the server what drivers to load for the above
data sources is as follows:</span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">jdbc.drivers=org.hsql.jdbcDriver,jdbc.idbDriver </span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<p class="MsoNormal" style="text-align:justify"><span
lang="EN-GB">That’s all the information the server needs to create and load a
data source for your beans to use.<span style="mso-spacerun: yes"> </span>The
jaws.xml file is used to tell your beans which data source to use.</span></p>
<p class="MsoNormal" style="text-align:justify"></p>
<h2><span lang="EN-GB">Example Adding an Oracle Data
Source</span></h2>
<p class="MsoNormal"
style="margin-left:.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;
tab-stops:list .25in"><span lang="EN-GB">1.</span><span lang="EN-GB"><span
style='font:7.0pt "Times New Roman"'>
</span>Downloaded the Oracle JDBC (thin) drivers from the Oracle web site.<span
style="mso-spacerun: yes"> </span>This is usually in zip format, so I renamed
the extension to ‘.jar’ so jBoss can automatically add it to the
classpath.</span></p>
<p class="MsoNormal"
style="margin-left:.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;
tab-stops:list .25in"><span lang="EN-GB">2.<span style='font:7.0pt "Times New
Roman"'> </span>Copied the archive to the
/lib/ext directory so it is added to the jBoss classpath</span></p>
<p class="MsoNormal"
style="margin-left:.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;
tab-stops:list .25in"><span lang="EN-GB">3.</span><span lang="EN-GB"><span
style='font:7.0pt "Times New Roman"'>
</span>Added the driver name to the line to the /conf/jboss.properties file:</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal" style="margin-left:.5in"><span
lang="EN-GB">jdbc.drivers=org.hsql.jdbcDriver,jdbc.idbDriver<b
style="mso-bidi-font-weight:normal">,oracle.jdbc.driver.OracleDriver</b></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span
lang="EN-GB"> </span></p>
<p class="MsoNormal"
style="margin-left:.25in;text-indent:-.25in;mso-list:l0 level1 lfo1;
tab-stops:list .25in"><span lang="EN-GB">4.</span><span lang="EN-GB"><span
style='font:7.0pt "Times New Roman"'>
</span>Added the JDBC connection information to the /conf/jboss.conf file:</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal" style="margin-right:-59.25pt"><span
lang="EN-GB"><MLET CODE = "org.jboss.jdbc.DataSourceImpl"
ARCHIVE="jboss.jar,classes102.jar"
CODEBASE="../lib/ext/"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><ARG
TYPE="java.lang.String"
VALUE="jdbc:oracle:thin:@192.9.200.80:1521:orcl"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><ARG
TYPE="java.lang.String" VALUE="Oracle"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><ARG
TYPE="java.lang.String"
VALUE="oracle.jdbc.driver.OracleDriver"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><ARG
TYPE="java.lang.String" VALUE="scott"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><span
style="mso-spacerun: yes"> </span><ARG
TYPE="java.lang.String" VALUE="tiger"></span></p>
<p class="MsoNormal"><span
lang="EN-GB"></MLET></span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></div>
</body>
</html>
1.1 jbossweb/contconf_howto1.html
Index: contconf_howto1.html
===================================================================
<html>
<head>
<title>
Container Configuration
</title>
</head>
<font face=arial,helvetica size=+3 color="#ffcc00">
What is a Container Configuration?
</font>
<p>When you deploy an application, jBoss creates a container for each of your beans.
This container will be used only for this particular bean. It must be configured
according to the type of the bean (CMP Entity Bean, Stateful Session Bean, ...).
Different configurations are stored in the <em>standardjboss.xml</em> file. You may
provide additional custom configurations in the <em>jboss.xml</em> file for your
application.</p>
<ul>
<li><b>Standard Configurations</b><br>jBoss currently provides a standard
configuration for each type of bean. These configurations are stored in the
<em>standardjboss.xml</em> file. There are currently 8 standard configurations. If you
don't provide anything else (as we advise you to do, at least at the beginning), jBoss
will automatically choose the right standard configuration for your container. The
available configurations are the following: <ul><tt>
<li>Standard CMP EntityBean
<li>Standard BMP EntityBean
<li>Standard Stateless SessionBean
<li>Standard Stateful SessionBean
<li>jdk1.2.2 CMP EntityBean
<li>jdk1.2.2 BMP EntityBean
<li>jdk1.2.2 Stateless SessionBean
<li>jdk1.2.2 Stateful SessionBean
</tt></ul>
<p>The first four ones are used if you run <b>jBoss</b> with a jdk1.3 JVM. The four
last ones are used if you run <b>jBoss</b> with a jdk1.2.2 JVM.</p>
<li><b>How do I configure my bean for jdk1.2.2 clients?</b><br>If you run jBoss on a
jdk1.3 JVM, but your clients use jdk1.2.2, the standard configuration won't work (the
protocols are not backward compatible). In this case, you have to force jBoss to use
the corresponding jdk1.2.2 configuration. You do that by providing a
<em>jboss.xml</em> file. This file must be in the <em>META-INF</em> directory of your
jar file, along with <em>ejb-jar.xml</em>. In the section for your bean, simply add a
<tt><configuration-name></tt> tag. Your xml files will look like this (note that
the <tt><ejb-name></tt> tags in the 2 xml files must match)
<p>
<em>ejb-jar.xml</em>:</p>
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<ejb-jar>
<enterprise-beans>
<session>
<b> <ejb-name>Bean A</ejb-name></b>
<home>AHome</home>
<remote>A</remote>
<ejb-class>ABean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</ejb-ref>
</session>
</enterprise-beans>
...
</ejb-jar>
</pre></td></tr></table></p>
<em>jboss.xml</em>:
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<jboss>
<enterprise-beans>
<session>
<b> <ejb-name>Bean A</ejb-name>
<configuration-name>jdk1.2.2 Stateful
SessionBean<configuration-name> </b>
</session>
<enterprise-beans>
</jboss>
</pre></td></tr></table></p>
<li><b>How do I specify my own custom configuration?</b><br>You may want to provide
your own advanced configuration. For example, you may want to increase the size of
your pool, or use a different instance cache. To do this, you must define your
configuration in <em>jboss.xml</em> in the <tt><container-configurations></tt>
tag. Then you have to use your new configuration in the bean section of your
<em>jboss.xml</em> file. For example, if you want to log calls to your bean, your file
will look like this :
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<configuration-name><b>Logging
Configuration</b><configuration-name>
</session>
<enterprise-beans>
...
<container-configurations>
<container-configuration>
<container-name><b>Logging Configuration</b></container-name>
<call-logging>true</call-logging>
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
<instance-cache>org.jboss.ejb.plugins.NoPassivationStatefulSessionInstanceCache</instance-cache>
<persistence-manager>org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager</persistence-manager>
<transaction-manager>org.jboss.tm.TxManager</transaction-manager>
<container-invoker-conf>
<Optimized>False</Optimized>
</container-invoker-conf>
</container-configuration>
</container-configurations>
...
</jboss>
</pre></td></tr></table></p>
<li><b>What can be configured?</b><br>These are the different things you can
customize in a <tt><container-configuration></tt> tag in <em>jboss.xml</em>. See
the <a href="jboss.dtd">jboss.xml DTD</a> for more details: <ul>
<li><tt>call-logging</tt>: this tag must have a boolean value: true or false. It
tells the container if calls to this bean must be logged or not. It is set to false in
standard configurations.
<li><tt>container-invoker</tt>: the container invoker is .
<li><tt>instance-pool</tt>: the instance pool is a set (a "pool") of free (ie not
currently associated to a context) instances of the bean. When an instance of the bean
is no longer used, it is thrown back to the pool. This is not used for Stateful
Session Beans, since the instances are not reusable.
<li><tt>instance-cache</tt>: the cache contains the instances of a bean which are
currently associated to a context. If it grows too big, the cache may decide to
passivate some of the instances. This is not used for Stateless Session Beans, since
these are directly reusable after a call.
<li><tt>persistence-manager</tt>: the persistence manager is in charge of storing
permanent information in the instance of a bean. For BMP Entities, it will merely
transmit orders to the bean; for Stateful Sessions and CMP Entities, it has to save
the state of the bean. This is not used for Stateless Session Beans, since they don't
have a state to save.
<li><tt>transaction-manager</tt>
<li><tt>container-invoker-conf</tt>: configuration of the container invoker.
<li><tt>container-cache-conf</tt>: configuration of the cache. For example, you may
specify the time interval between passivations.
<li><tt>container-pool-conf</tt>: configuration of the pool. Mainly, the size of the
pool.
<li><tt>commit-option</tt> must be A, B or C. See the ejb specification for more
details.
</ul>
</ul>
<hr>Author: <a href="mailto:[EMAIL PROTECTED]">S�bastien Alborini</a>
</body>
</html>
1.1 jbossweb/contconf_howto.html
Index: contconf_howto.html
===================================================================
<html>
<head>
<title>
Container Configuration
</title>
</head>
<font face=arial,helvetica size=+3 color="#ffcc00">
What is a Container Configuration?
</font>
<p>When you deploy an application, jBoss creates a container for each of your beans.
This container will be used only for this particular bean. It must be configured
according to the type of the bean (CMP Entity Bean, Stateful Session Bean, ...).
Different configurations are stored in the <em>standardjboss.xml</em> file. You may
provide additional custom configurations in the <em>jboss.xml</em> file for your
application.</p>
<ul>
<li><b>Standard Configurations</b><br>jBoss currently provides a standard
configuration for each type of bean. These configurations are stored in the
<em>standardjboss.xml</em> file. There are currently 8 standard configurations. If you
don't provide anything else (as we advise you to do, at least at the beginning), jBoss
will automatically choose the right standard configuration for your container. The
available configurations are the following: <ul><tt>
<li>Standard CMP EntityBean
<li>Standard BMP EntityBean
<li>Standard Stateless SessionBean
<li>Standard Stateful SessionBean
<li>jdk1.2.2 CMP EntityBean
<li>jdk1.2.2 BMP EntityBean
<li>jdk1.2.2 Stateless SessionBean
<li>jdk1.2.2 Stateful SessionBean
</tt></ul>
<p>The first four ones are used if you run <b>jBoss</b> with a jdk1.3 JVM. The four
last ones are used if you run <b>jBoss</b> with a jdk1.2.2 JVM.</p>
<li><b>How do I configure my bean for jdk1.2.2 clients?</b><br>If you run jBoss on a
jdk1.3 JVM, but your clients use jdk1.2.2, the standard configuration won't work (the
protocols are not backward compatible). In this case, you have to force jBoss to use
the corresponding jdk1.2.2 configuration. You do that by providing a
<em>jboss.xml</em> file. This file must be in the <em>META-INF</em> directory of your
jar file, along with <em>ejb-jar.xml</em>. In the section for your bean, simply add a
<tt><configuration-name></tt> tag. Your xml files will look like this (note that
the <tt><ejb-name></tt> tags in the 2 xml files must match)
<p>
<em>ejb-jar.xml</em>:</p>
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<ejb-jar>
<enterprise-beans>
<session>
<b> <ejb-name>Bean A</ejb-name></b>
<home>AHome</home>
<remote>A</remote>
<ejb-class>ABean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</ejb-ref>
</session>
</enterprise-beans>
...
</ejb-jar>
</pre></td></tr></table></p>
<em>jboss.xml</em>:
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<jboss>
<enterprise-beans>
<session>
<b> <ejb-name>Bean A</ejb-name>
<configuration-name>jdk1.2.2 Stateful
SessionBean<configuration-name> </b>
</session>
<enterprise-beans>
</jboss>
</pre></td></tr></table></p>
<li><b>How do I specify my own custom configuration?</b><br>You may want to provide
your own advanced configuration. For example, you may want to increase the size of
your pool, or use a different instance cache. To do this, you must define your
configuration in <em>jboss.xml</em> in the <tt><container-configurations></tt>
tag. Then you have to use your new configuration in the bean section of your
<em>jboss.xml</em> file. For example, if you want to log calls to your bean, your file
will look like this :
<p><table border=0 bgcolor="#80ff80" cellspacing=4><tr><td><pre>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Bean A</ejb-name>
<configuration-name><b>Logging
Configuration</b><configuration-name>
</session>
<enterprise-beans>
...
<container-configurations>
<container-configuration>
<container-name><b>Logging Configuration</b></container-name>
<call-logging>true</call-logging>
<container-invoker>org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInvoker</container-invoker>
<instance-cache>org.jboss.ejb.plugins.NoPassivationStatefulSessionInstanceCache</instance-cache>
<persistence-manager>org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager</persistence-manager>
<transaction-manager>org.jboss.tm.TxManager</transaction-manager>
<container-invoker-conf>
<Optimized>False</Optimized>
</container-invoker-conf>
</container-configuration>
</container-configurations>
...
</jboss>
</pre></td></tr></table></p>
<li><b>What can be configured?</b><br>These are the different things you can
customize in a <tt><container-configuration></tt> tag in <em>jboss.xml</em>. See
the <a href="??">jboss.xml DTD</a> for more details: <ul>
<li><tt>call-logging</tt>: this tag must have a boolean value: true or false. It
tells the container if calls to this bean must be logged or not. It is set to false in
standard configurations.
<li><tt>container-invoker</tt>: the container invoker is .
<li><tt>instance-pool</tt>: the instance pool is a set (a "pool") of free (ie not
currently associated to a context) instances of the bean. When an instance of the bean
is no longer used, it is thrown back to the pool. This is not used for Stateful
Session Beans, since the instances are not reusable.
<li><tt>instance-cache</tt>: the cache contains the instances of a bean which are
currently associated to a context. If it grows too big, the cache may decide to
passivate some of the instances. This is not used for Stateless Session Beans, since
these are directly reusable after a call.
<li><tt>persistence-manager</tt>: the persistence manager is in charge of storing
permanent information in the instance of a bean. For BMP Entities, it will merely
transmit orders to the bean; for Stateful Sessions and CMP Entities, it has to save
the state of the bean. This is not used for Stateless Session Beans, since they don't
have a state to save.
<li><tt>transaction-manager</tt>
<li><tt>container-invoker-conf</tt>: configuration of the container invoker.
<li><tt>container-cache-conf</tt>: configuration of the cache. For example, you may
specify the time interval between passivations.
<li><tt>container-pool-conf</tt>: configuration of the pool. Mainly, the size of the
pool.
<li><tt>commit-option</tt> must be A, B or C. See the ejb specification for more
details.
</ul>
</ul>
<hr>Author: <a href="mailto:[EMAIL PROTECTED]">S�bastien Alborini</a>
</body>
</html>