John,



Thanks for such good info!

I have got a problem though: when trying to run or debug the project, the
CPU goes to 100% and stays there for ages. After 10 minutes I gave up
waiting and ended the process.

Did you experience this? Any work-arounds?

I tried without the "-classic" but the results were the same.


Cheers - Adam


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of John P.
Coffey
Sent: Wednesday, May 16, 2001 1:48 AM
To: [EMAIL PROTECTED]
Subject: [JBoss-user] Jbuilder 4.0 Foundation & JBoss2.2.1 HowTo Guide


Well after pulling my hair out for the last couple of days here is how to
get JBoss and JBuilder as friends...

Instructions for integrating JBuilder 4.0 Foundation or Higher with JBoss
for source level debugging

- Install the JBoss Server

For the purposes of this howto, I installed teh JBossTomcat release version
2.2.1 into d:\JBoss-2.2.1_Tomcat-3.2.1.  Download this from
http://www.jboss.org and select the binary link from the page.  This is a
little confusing as it also contains the source (in the best interests of
open source of course).

- Create a JBuilder 4.0 Project

I typically point this to the source for my EJB code.

- Create a JBoss-Server library

This is the most difficult part of the setup to get right, however once
completed it does not need to be changed so you can setup multiple ejb
projects and reuse this library (well done Borland)

- Project / Project Properties / RequiredLibraries / Add...

Add the following library entries to the JBoss-Server classpath (the order
is crucual here).  Pay specific attention to the log and tmp folders,
faulure to put these in the Library class path will cause the classloader to
spit out error messages, the most confusing of which is that /log.properties
or /tmp.properties files could not be located.  This is because the folders
containing these files need to be in the classpath and the class loader
complains.

/$JBOSS_TOMCAT_HOME/jboss/lib/crimson.jar
/$JBOSS_TOMCAT_HOME/jboss/bin/run.jar
/$JBOSS_TOMCAT_HOME/jboss/bin
/$JBOSS_TOMCAT_HOME/jboss/conf
/$JBOSS_TOMCAT_HOME/jboss/lib/jaas.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/jboss-jaas.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/jdbc2_0-stdext.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/jmxri.jar
/$JBOSS_TOMCAT_HOME/tomcat/lib/parser.jar
/$JBOSS_TOMCAT_HOME/tomcat/lib/servlet.jar
/$JBOSS_TOMCAT_HOME/tomcat/lib/jaxp.jar
/$JBOSS_TOMCAT_HOME/tomcat/lib/webserver.jar
/$JBOSS_TOMCAT_HOME/tomcat/lib/jasper.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/activation.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/awt.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/dynaserver.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejb.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxeditor.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxejb.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxjaws.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxjboss.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/hsql.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/idb.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jboss.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jetty-service.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jms.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jmxtools.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jndi.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jnpserver.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jpl-util-0_5b.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jta-spec1_0_1.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/mail.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/tomcat-service.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jbossmq.jar
/$JBOSS_TOMCAT_HOME/jboss/db
/$JBOSS_TOMCAT_HOME/jboss/conf/default
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/log4j.jar
/$JBOSS_TOMCAT_HOME/jboss/log
/$JBOSS_TOMCAT_HOME/jboss/tmp
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jbosssx.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jbosscx-0.2.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/connector.jar
/$JBOSS_TOMCAT_HOME/jboss/lib/ext/minerva-1_0b3.jar

In the source tab for the JBoss-Server library point to
/$JBOSS_TOMCAT_HOME/jboss/src.  This is how JBuilder resolves where to find
the source for stepping through the code.  Without this step typically you
will be able to step through the code but the Main.java  will appear as
Main.class.

Set the main class to 'org.jboss.Main'.  This is the main startup entry for
the JBoss server.  Also make sure that you set the working directory to
$JBOSS_TOMCAT_HOME/jboss/bin

cut and paste the following line and place it into the 'vm parameters' entry
field (Project/Properties/Run)

-classic -Dtomcat.home=D:\$JBOSS_TOMCAT_HOME\tomcat -Duser.dir=D:\$JBOSS_TOM
CAT_HOME\jboss\bin -Djavax.xml.parsers.SAXParserFactory=org.apache.crimson.j
axp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apac
he.crimson.jaxp.DocumentBuilderFactoryImpl

The starup argument should be left blank with the above setting.  If you
want to run with the integrated tomcat you can put tomcat as the argument,
howevre beware that you MAY need to replace the
/$JBOSS_TOMCAT_HOME/jboss/conf/default with
/$JBOSS_TOMCAT_HOME/jboss/conf/tomcat

If the above steps have been done correctly, open up JBoss-Server.library,
this is located in the folder you specified when creating the library.
Typically this is C:\Documents and Settings\<nt_username>\.jbuilder4 or home
directory on Linux.  Do NOT edit this file, I found several problems
manually editing this file and I am unsure why but I got several instances
of resoce not found exceptions afterwards.  If in doubt don't touch it!

<?xml version="1.0" encoding="UTF-8"?>

<library>
  <!--JBuilder Library Definition File-->
  <fullname>JBoss-Server</fullname>
  <class>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/crimson.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/bin/run.jar]</path>
    <path>/$JBOSS_TOMCAT_HOME/jboss/bin</path>
    <path>/$JBOSS_TOMCAT_HOME/jboss/conf</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/jaas.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/jboss-jaas.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/jdbc2_0-stdext.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/jmxri.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/tomcat/lib/parser.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/tomcat/lib/servlet.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/tomcat/lib/jaxp.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/tomcat/lib/webserver.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/tomcat/lib/jasper.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/activation.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/awt.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/dynaserver.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejb.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxeditor.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxejb.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxjaws.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/ejxjboss.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/hsql.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/idb.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jboss.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jetty-service.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jms.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jmxtools.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jndi.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jnpserver.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jpl-util-0_5b.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jta-spec1_0_1.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/mail.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/tomcat-service.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jbossmq.jar]</path>
    <path>/$JBOSS_TOMCAT_HOME/jboss/db</path>
    <path>/$JBOSS_TOMCAT_HOME/jboss/conf/default</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/log4j.jar]</path>
    <path>/$JBOSS_TOMCAT_HOME/jboss/log</path>
    <path>/$JBOSS_TOMCAT_HOME/jboss/tmp</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jbosssx.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/jbosscx-0.2.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/connector.jar]</path>
    <path>[/$JBOSS_TOMCAT_HOME/jboss/lib/ext/minerva-1_0b3.jar]</path>
  </class>
  <source>
    <path>/$JBOSS_TOMCAT_HOME/jboss/src</path>
  </source>
</library>


A note about the initial file directory specifier.  I have seen this a
couple of ways, if you have multiple hard drives with the home on C and the
JBoss on D for example you will see 'D%|/' in place of / or alternatively
you may see a relative directory such as ../../JBoss-2.2.1....

Bypass the hanging InstantDB

I found that loading instant DB in its minnerva pool occasionally causes the
debugger to hang (on different setups), to work around this, I made the
following modifications to config/tomcat and also config/default (it depends
on the model you wish to start up JBoss in)

<!-- JDBC @JC org.enhydra.instantdb.jdbc.idbDriver  removed from list of
drivers -->
<mbean code="org.jboss.jdbc.JdbcProvider"
name="DefaultDomain:service=JdbcProvider">
   <!-- <attribute
name="Drivers">org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver</att
ribute> HANGS DRIVER -->
   <attribute name="Drivers">org.hsql.jdbcDriver</attribute>
</mbean>


and comment out the minnerva pool definitions associated with InstantDB

<!--
  <mbean code="org.jboss.jdbc.XADataSourceLoader"
name="DefaultDomain:service=XADataSource,name=InstantDB">
    <attribute name="PoolName">InstantDB</attribute>
    <attribute
name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImp
l</attribute>
    <attribute name="Properties"></attribute>
    <attribute
name="URL">jdbc:idb:../conf/default/instantdb.properties</attribute>
    <attribute name="GCMinIdleTime">1200000</attribute>
    <attribute name="JDBCUser" />
    <attribute name="MaxSize">10</attribute>
    <attribute name="Password" />
    <attribute name="GCEnabled">false</attribute>
    <attribute name="InvalidateOnError">false</attribute>
    <attribute name="TimestampUsed">false</attribute>
    <attribute name="Blocking">true</attribute>
    <attribute name="GCInterval">120000</attribute>
    <attribute name="IdleTimeout">1800000</attribute>
    <attribute name="IdleTimeoutEnabled">false</attribute>
    <attribute name="LoggingEnabled">false</attribute>
    <attribute name="MaxIdleTimeoutPercent">1.0</attribute>
    <attribute name="MinSize">0</attribute>
  </mbean>
-->

- Sprinkle breakpoints throughout the code

Firstly it is necessary to put breakpoints in your ejb's.  As outlined
previously project settings should point to the source of your beans.  Open
up a typical bean implementation and place breakpoints whereever desired.

- Start the JBoss server

Using the IDE, select run / start debugger (shift + f9).  If you want to see
your beans being instantiated by the deployer, place breakpoints on the bean
constructors (if you specified them)  You will not need to have a client
running to exercise this functionality.

- Deploy the Beans

copy of drag/drop (for windoze fans) the ejb jar file containing the
ejb-jar.xml and jboss.xml (optional) to the deploy folder.  If you have set
breakpoints in stateless session ejb's these should cause the debugger to
stop in your code!  Hurrah!

- Start a client test application as a separate JBuilder application
instance

If you include a client test code in your project you can debug this also
(even though the project's main execution class is sopecified as
'org.jboss.Main'.  To do this, launch a 2nd instance of JBuilder in another
window, then select the client class containing the Main() entry with the
right mouse button and select the debug popup context menu option. (nice one
again JBuilder).  You should be aware though that this will be running from
the JBOSS_TOMCAST_HOME/jboss/bin directory as that is where we set the
project to execute from.  If all goes well you should have your other
JBuilder instance stop in the breakpoints you set.

I hope this helps the rest of the JBoss developer community - It's a
wonderful product.  If anyone spots some ommissions in this how-to please
keep me up to date.

John Coffey

Pingtel Corporation


_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user


_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to