Hello,
I'm now trying to deploy a jar file that incorporates both an entity and a session bean. I had done this successfully using the CD example. However, now that I am using my own classes, I seem to be doing something wrong.
A quick overview of the interfaces and classes I am working with:
- interface WorkOrder extends Runnable
This interface is for objects that can be scheduled to run at a periodic
interval.
- abstract class WorkOrderImpl implements WorkOrder
This class provides some default implementation of WorkOrder.
- interface SnmpWorkOrder extends EJBObject, WorkOrder
Remote interface for what will be an entity bean. This interface allows
an object to obtain an IP address, OID, comm string, etc.
- class SnmpWorkOrderPK implements Serializable
Primary Key class that is really just a string.
- interface SnmpWorkOrderHome extends EJBHome
This interface allows SnmpWorkOrders to be created. Also you can find
SnmpWorkOrders by a SnmpWorkOrderPK.
- class SnmpWorkOrderBean extends WorkOrderImpl implements EntityBean
This class has the implementation behind SnmpWorkOrder. It also has
the ejbActivate, ejbPassivate, etc. methods. It has a run() method
that creates an SNMP request and gets back a response.
- interface Scheduler extends EJBObject
Remote interface for a stateless session bean. This interface allows
an object to schedule a WorkOrder (i.e. schedule(WorkOrder wo)). I
want to use this class to schedule any type of work order (not just
SnmpWorkOrders)
- interface SchedulerHome extends EJBHome
Allows a Scheduler to be created
- interface SchedulerBean extends SessionBean
Implementation for my scheduler bean.
Originally I wrote the Scheduler bean (with the SnmpWorkOrder was just a class that the client created and the Scheduler used), this worked fine. My problems began when I tried to change SnmpWorkOrder into an entity bean.
Here is the deployment error I get:
[Auto deploy] Auto deploy of file:/D:/jboss/deploy/scheduler.jar
[Container factory] Deploying:file:/D:/jboss/deploy/scheduler.jar
[Container factory] Loading ejb-jar.xml : jar:file:/D:/TEMP/tmpejbjar23471.jar!/
META-INF/ejb-jar.xml
[Container factory] Loading standardjboss.xml : jar:file:/D:/jboss/lib/ext/jboss
.jar!/org/jboss/metadata/standardjboss.xml
[Container factory] jar:file:/D:/TEMP/tmpejbjar23471.jar!/META-INF/jboss.xml fou
nd. Overriding defaults
[Container factory] Deploying SnmpWorkOrderBean
[Container factory] Deploying SchedulerBean
[JAWS] Initializing JAWS plugin for SnmpWorkOrderBean
[Auto deploy] Deployment failed:file:/D:/jboss/deploy/scheduler.jar
[Auto deploy] javax.management.RuntimeMBeanException: RuntimeException thrown in
operation deploy
[Auto deploy] at javax.management.MBeanServer.invoke(MBeanServer.java:1647)
[Auto deploy] at javax.management.MBeanServer.invoke(MBeanServer.java:1501)
[Auto deploy] at org.jboss.ejb.AutoDeployer.deploy(AutoDeployer.java:285)
[Auto deploy] at org.jboss.ejb.AutoDeployer.run(AutoDeployer.java:221)
[Auto deploy] at java.lang.Thread.run(Thread.java:484)
I think the problem is in my deployment files but I'm not really sure where. Here is my ejb-jar.xml file.
<ejb-jar>
<description>Allows work orders to be scheduled on the EJB server </description>
<display-name>Scheduler</display-name>
<enterprise-beans>
<session>
<description>stateless session bean</description>
<ejb-name>SchedulerBean</ejb-name>
<home>com.aprisma.gpe.SchedulerHome</home>
<remote>com.aprisma.gpe.Scheduler</remote>
<ejb-class>com.aprisma.gpe.SchedulerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
<entity>
<description>CMP entity bean</description>
<ejb-name>SnmpWorkOrderBean</ejb-name>
<home>com.aprisma.gpe.SnmpWorkOrderHome</home>
<remote>com.aprisma.gpe.SnmpWorkOrder</remote>
<ejb-class>com.aprisma.gpe.SnmpWorkOrderBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>com.aprisma.gpe.SnmpWorkOrderPK</prim-key-class>
<reentrant>False</reentrant>
<cmp-field><field-name>oid</field-name></cmp-field>
<cmp-field><field-name>snmpWorkID</field-name></cmp-field>
<cmp-field><field-name>ipAddress</field-name></cmp-field>
<cmp-field><field-name>pollInterval</field-name></cmp-field>
<cmp-field><field-name>commString</field-name></cmp-field>
</entity>
</enterprise-beans>
</ejb-jar>
My jaws.xml file contains a bunch of mapping information (which I took as the default) and a definition of the cmp-fields (listed above). All the fields are of type VARCHAR(256) except for pollInterval which is of type INTEGER.
My jboss.xml file states to use a "Stateless SessionBean" configuration for my Scheduler object and a "CMP EntityBean" configuration for my SnmpWorkOrder object. I took the default entries for each of configurations.
Any help you that you can provide will be greatly appreciated.
- Craig Dube
