Ejb-ref-mapping in orion-ejb.jar missing location attribute after deployment
I have noticed that on several of my entity beans that after deployment the <ebj-ref-mapping location="JNDIName" name="LocalName"/> is missing the location attribute. This causes any attempts to lookup the EJBHome for that EJB to fail because the path to the EJBHome in JNDI cannot be found (obviously!). The problem is that this causes me to manually edit the application-deployment/<app>/<ejb.jar>/orion-ejb.zml after each deployment via the admin.jar. This seems like a bug with OC4J and I am wondering if Oracle is aware/doing something to fix this?
I have noticed that the same problem exists for session beans, however, for some strange reason the EJBHomes can still be resolved in JNDI. In all cases the location in JNDI is different then the <ejb-ref-name> I used in the client EJB.
Example being I have an entity bean at com.foo.Foo and the session bean uses lookup("java:comp/env/ejb/Foo") it is still able to find the EJB even though the orion-ejb.xml looses the location attribute. If the case is an entity bean referencing another entity bean in the same fashion I get an error because the location attribute is missing.
If the 'location' value is same as the 'name' value, then even though the location attribute is missing, it is ok and should work. If they are not the same, then you should have defined the ejb-link element in your ejb-jar.xml when defining this ejb-ref and that would make the location attribute appear in the generated orion-ejb-jar.xml.
If the referenced bean is from a different application (EAR), then you should have used the -parent option when deploying the application.
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Kris Trujillo ([email protected]):
I have noticed that on several of my entity beans that after deployment the <ebj-ref-mapping location="JNDIName" name="LocalName"/> is missing the location attribute. This causes any attempts to lookup the EJBHome for that EJB to fail because the path to the EJBHome in JNDI cannot be found (obviously!). The problem is that this causes me to manually edit the application-deployment/<app>/<ejb.jar>/orion-ejb.zml after each deployment via the admin.jar. This seems like a bug with OC4J and I am wondering if Oracle is aware/doing something to fix this?
I have noticed that the same problem exists for session beans, however, for some strange reason the EJBHomes can still be resolved in JNDI. In all cases the location in JNDI is different then the <ejb-ref-name> I used in the client EJB.
Example being I have an entity bean at com.foo.Foo and the session bean uses lookup("java:comp/env/ejb/Foo") it is still able to find the EJB even though the orion-ejb.xml looses the location attribute. If the case is an entity bean referencing another entity bean in the same fashion I get an error because the location attribute is missing.<HR></BLOCKQUOTE>
null
Similar Messages
-
Missing JCO files after deploying ESS
Hi
I deployed ESS BP.
I should get the below JCO destinations
u2022 SAP_R3_HumanResources
u2022 SAP_R3_HumanResources_MetaData
u2022 SAP_R3_Financials
u2022 SAP_R3_Financials_MetaData
u2022 SAP_R3_SelfServiceGenerics
u2022 SAP_R3_SelfServiceGenerics_MetaData
u2022 SAP_R3_Travel
u2022 SAP_R3_Travel_MetaData
But I missied the below JCO's.
I got only few.....
u2022 SAP_R3_Financials
u2022 SAP_R3_Financials_MetaData
u2022 SAP_R3_Travel
u2022 SAP_R3_Travel_MetaData
How to get back the above JCO's to configure completely my ESS
Thanks in advance
RenuHi Renu,
Check this link for creating JCO destinations, and create the rest of the jco's
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/526bd490-0201-0010-038e-d3ff7eb1d16e
http://help.sap.com/erp2005_ehp_03/helpdata/EN/8c/cb3042366c0521e10000000a155106/frameset.htm
Regards,
Tilak.
Edited by: Tilak on Aug 11, 2008 6:54 AM -
Broken orion-ejb-jar.dtd?
I use the Ant task <xmlvalidate> in an EJB project to check the EJB XML deployment descriptors against their DTDs. Checking the (Sun-specified) "ejb-jar.xml" is fine. JDeveloper creates the OC4J specific deployment descriptor "orion-ejb-jar.xml" with a reference to the DTD located at "http://xmlns.oracle.com/ias/dtds/orion-ejb-jar.dtd". Now this DTD seems to be broken.
Firstly, the DTD seems to have an invalid syntax. I'm not a DTD expert but Ant complains about lines 279-281 of that DTD :
279: isolation (commited | serializable | uncommited | repeatable_reads)
280: CDATA #IMPLIED
281: locking-mode (pessimistic | optimistic | read-only | old_pessimistic)
286: max-tx-retries CDATA #IMPLIED
287: update-changed-fields-only (true | false) "true"
There seems to be an attribut missing altogether at line 280 (see line 286) so I deleted that line. Then for lines 279 and 281, Ant complained about missing quotes - apparently, such an "enum" needs to have a "default value" (as in line 287), so I manually added such a value for each line.
The final error was in the "orion-ejb-jar.xml" (created by JDeveloper itself). Here is a piece of that:
<orion-ejb-jar>
<enterprise-beans>
<session-deployment max-instances="-1" name="DiscountCalculator"/>
I assume that the "max-instances" attribute sets the number of EJB instances in the OC4J pool to "unlimited". However, according to the DTD, session beans don't have such a "max-instances" attribute (lines 10-21):
<!-- Deployment info for a session bean. -->
ELEMENT session-deployment (env-entry-mapping*, ejb-ref-mapping*, resource-ref-mapping*)
ATTLIST session-deployment call-timeout CDATA #IMPLIED
copy-by-value CDATA #IMPLIED
location CDATA #IMPLIED
max-tx-retries CDATA #IMPLIED
name CDATA #IMPLIED
persistence-filename CDATA #IMPLIED
timeout CDATA #IMPLIED
wrapper CDATA #IMPLIED
replication CDATA #IMPLIED
>
So I copied and pasted the instances attribute from the entity bean section.
How come the DTD is broken? Even the 9.0.3 OC4J docs (http://download-east.oracle.com/docs/cd/A97688_08/generic.903/a97677/dtdxml.htm#620714) talk about all sorts of features (such as the "max-instances" attribute for session beans) and still points to the DTD "http://xmlns.oracle.com/ias/dtds/orion-ejb-jar.dtd" that doesn't have these features at all.Karsten,
In case you are still on it, I stumbled upon this some time ago, too. My best guess is that they miss entire phrase, which I put in bold:
....mmited | repeatable_reads ) "commited"
disable-wrapper-cache CDATA #IMPLIED
locking-mode ( pesim...
(There is a line break between '"commited"' and 'disable-wrapper-cache'. 'commited', 'uncommited' must be MISSPELLED exactly as above.)
Btw, max-instances and min-instances are in the DTD that ships with 9.0.3 (jarred in oc4j.jar). This DTD, however, is still broken in the way that you found (it won't even XML-validate). How do they go around this? go figure! Oracle documentation? we all know ...
Best regards,
bjk -
JDeveloper / OC4J rewriting my orion-ejb-jar.xml
Hi All.
Im having a play around with OC4J and CMP entity beans and struts at the moment learning some stuff for a new job, so ive started to write a little test app to get used to things.
Ive created a CMP entity - CustomerEntityEJB, manually defined the tables etc wrote and built it using JDeveloper 10.
Ive created all the necessary classes and descriptors in JDeveloper and the bean compiles and deploys fine, however no matter what i do, the table attribute of the <entity-deployment> elemnt is ALWAYS removed from the orion-ejb-jar.xml file before its deployed and i have no idea why.
Here are some snippets form the xml config files im using....
ejb-jar.xml :
<entity>
<description>Entity Bean ( CMP )</description>
<display-name>CustomerEntityEJB</display-name>
<ejb-name>CustomerEntityEJB</ejb-name>
<local-home>com.gb.ejb.entity.customer.CustomerEntityEJBLocalHome</local-home>
<local>com.gb.ejb.entity.customer.CustomerEntityEJBLocal</local>
<ejb-class>com.gb.ejb.entity.customer.CustomerEntityEJBBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Long</prim-key-class>
<reentrant>false</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CustomerEntityEJB</abstract-schema-name>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>title</field-name>
</cmp-field>
<cmp-field>
<field-name>forename</field-name>
</cmp-field>
<cmp-field>
<field-name>surname</field-name>
</cmp-field>
<cmp-field>
<field-name>email</field-name>
</cmp-field>
<cmp-field>
<field-name>password</field-name>
</cmp-field>
<cmp-field>
<field-name>active</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
<query>
<query-method>
<method-name>findAll</method-name>
<method-params/>
</query-method>
<ejb-ql>SELECT OBJECT(c) FROM CustomerEntityEJB c</ejb-ql>
</query>
</entity>
orion-ejb-jar.xml as in JDeveloper:
<?xml version = '1.0' encoding = 'windows-1252'?>
<orion-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-ejb-jar-10_0.xsd" schema-major-version="10" schema-minor-version="0">
<enterprise-beans>
<persistence-manager name="toplink"/>
<session-deployment name="CustomerSessionEJB" local-location="CustomerSessionEJB" />
<entity-deployment name="CustomerEntityEJB" data-source="jdbc/PostgresDS" table="Customer" local-location="CustomerEntityEJB">
<primkey-mapping>
<cmp-field-mapping name="id"/>
</primkey-mapping>
<cmp-field-mapping name="active"/>
<cmp-field-mapping name="email"/>
<cmp-field-mapping name="forename"/>
<cmp-field-mapping name="id"/>
<cmp-field-mapping name="password"/>
<cmp-field-mapping name="surname"/>
<cmp-field-mapping name="title"/>
</entity-deployment>
</enterprise-beans>
</orion-ejb-jar>
orion-ejb-jar.xml as viewed in the OC4J enterprise manager.
<?xml version="1.0" encoding="utf-8"?>
<orion-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-ejb-jar-10_0.xsd" deployment-version="10.1.3.3.0" deployment-time="1151415a0e3" schema-major-version="10" schema-minor-version="0" >
<enterprise-beans>
<persistence-manager name="toplink" class="oracle.toplink.internal.ejb.cmp.oc4j.Oc4jPersistenceManager" descriptor="toplink-ejb-jar.xml">
</persistence-manager>
<session-deployment name="CustomerSessionEJB" location="CustomerSessionEJB" local-location="CustomerSessionEJB" persistence-filename="CustomerSessionEJB">
<ejb-ref-mapping name="ejb/local/CustomerEntityEJB" location="TWA-EJB_CustomerEntityEJBLocal" />
</session-deployment>
<entity-deployment name="CustomerEntityEJB" location="CustomerEntityEJB" local-location="CustomerEntityEJB" concrete-bean-class="CustomerEntityEJB_ConcreteSubClass3" data-source="jdbc/PostgresDS" local-wrapper="CustomerEntityEJBLocalHome_LocalEntityHomeWrapper5">
</entity-deployment>
</enterprise-beans>
<assembly-descriptor>
<default-method-access>
<security-role-mapping name="<default-ejb-caller-role>" impliesAll="true" />
</default-method-access>
</assembly-descriptor>
</orion-ejb-jar>
As you can see, the orion-ejb-jar.xml that been deployed on the server has had extra attributes defined in it (like concrete-bean-class) which makessense - its adding in the bits i didnt to get th bean to deploy - however the table attribue is just removed, meaning my bean cant find the table - hence my app not working.
i just dont know how to stop this and would be extremely grateful if someone could give me a clue how to get my bean up and working properly as this is driving me insane.
Thanks in advance..
Gareth.sorted - the <persistence-manager name="toplink"/> element was automatically generated by JDeveloper and put in my orion-ejb-jar.xml appears to be un necessary and seemed to be breaking eveything - as soon as i removed it, the bean seemed to deploy ok and pick up the table name =]
as a bit of an aside does anyone know why it was automatically put there in the first place if it breaks things? -
More information about the ejb-ref element of ejb-jar.xml
Hello,
I am currently studying ejbs and I came across the ejb-ref element of the ejb-jar.xml file. I am in reference to O'Reilly Entreprise JavaBeans book. The book says that, thanks to the ejb-ref element it is possible to access one ejb from another ejb with the following client code:
InitialContext jndiContext = new InitialContext();
Object ref = jndiContext.lookup("java:comp/env/ejb/ProcessPaymentHomeRemote");
ProcessPaymentHomeRemote home = (ProcessPaymentHomeRemote) PortableRemoteObject.narrow(ref, ProcessPaymentHomeRemote.class);I thought one could invoke the above client code without the ejb-ref element being present in the ejb-jar.xml... I am right or wrong?
Then why the need for the ejb-ref element? Can anyone give me a concrete example of usage of the ejb-ref element where the ejb-ref element really is useful? What are the advantages of using the ejb-ref element?
Thanks in advance,
Julien Martin.Hi Julien,
The main reason is portability. It's true that in many J2EE implementations it is possible to access an EJB's Home object without going through the component context (java:comp/env), but all such approaches are NOT portable. In the J2EE programming model, all resource access is made via the private component namespace. Using this level of indirection allows the bean developer to code the application without having to know which physical resource will be used at runtime. Each J2EE implementation can use a different scheme to identity physical resources, so by sticking to logical references in your code, you guarantee portability. Finally, you have the advantage that you can change which physical resource is mapped at deployment time without having to change your code.
So, the bottom line is, whenever you have any J2EE component (ejb, servlet, jsp, Application Client) that looks up an ejb, data source, queue, connection factory, etc., always use the environment reference type that J2EE defines for it and look it up via java:comp/env.
--ken
Kenneth Saks
J2EE SDK Team
SUN Microsystems -
Does mapping to JNDI for ejb-refs have a performance impact?
Does mapping to JNDI names for ejb-refs have a performance impact for
WLS6.1?
In the ejb-jar.xml deployment descriptor, you can define an ejb reference as
follows:
<ejb-ref>
<ejb-ref-name>ejb/AccountHomeRemote</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.package structure.AccountHomeRemote</home>
<remote>com.package structure.AccountRemote</remote>
<!-- <ejb-link>AccountBean</ejb-link>-->
</ejb-ref>
Now, optionally, you can use the ejb-link element - or - you can, in the
weblogic DD, specify a JNDI name that the ejb-ref maps to.
Using a JNDI name buys you some flexibility. If, for some reason, the jar is
divided, you dont have to convert ejb-link's to JNDI names. The question is:
Is there a performance cost in doing this?
CheersHi Aashish,
Thanks for your quick reply. it was helpful, but i am not using RFC's. Correct me if i am wrong, but i have explained the scenarios in detail below.
Scenario 1. Synchronous
1) PI Picks file from a common folder.
2) PI does a data mapping and sends the data to ECC.
3) ECC contains an inbound interface which receives the data and in which abap proxy code is written.
4) The abap proxy code executes a function module and sends the response as an internal table back to PI.
5) PI receives the response and places it in a text/csv file and places it back to another folder.
I assume that the above would be possible only using BPM. What i understand is that in order for an interface to receive and send data, abstract mappings are to be used, and for this BPM is required. We do not have any conversions etc. its just a simple matter of receiving an internal table from ECC and creating a file to place in the folder.
I also understand that BPM could have bottlenecks due to queue and cache issues, messages might be pending, or lost etc.
Scenario 2. Asynchronous
1) PI Picks file from a common folder.
2) PI does a data mapping and sends the data to ECC.
3) ECC contains an inbound interface which receives the data and in which abap proxy code is written.
4) ABAP Proxy code executes the same function module and calls a seperate outbound interface and passes the values to it. This would be used in sending the response back.
5) PI receives the response from the second interface and places it in a text/csv file and places it back to another folder.
I would like to know which would be the better approach. Documentation/references to support your claims would be much appreciated.
Cheers,
Mz -
hi,
i get this following error when i start the WL 7.0. The web application fails
to start but the ejbs are started properly. This is an example from the Monson
Haefel book, on the CMP: Entity bean relationships.
Can anybody tell me what is happening ??
-thanks
-vasanth
Error log:
=============
<Error> <HTTP> <101179> <[HTTP] Error parsing des criptor in Web appplication
"C:\bea\user_projects\mydomain\.\myserver\.wlnotdele
te\titan\titan.war" [Path="C:\eclipse\workspace\titan4\dist\titan.ear", URI="tit
an.war"
weblogic.xml.dom.ChildCountException: missing child home in ejb-ref
at weblogic.xml.dom.DOMUtils.getElementByTagName(DOMUtils.java:147)
at weblogic.xml.dom.DOMUtils.getValueByTagName(DOMUtils.java:128)
at weblogic.servlet.internal.dd.EJBReference.<init>(EJBReference.java:61
at weblogic.servlet.internal.dd.WebAppDescriptor.<init>(WebAppDescriptor
.java:247)
at weblogic.servlet.internal.dd.DescriptorLoader.initializeWebXml(Descri
ptorLoader.java:540)
at weblogic.servlet.internal.dd.DescriptorLoader.<init>(DescriptorLoader
.java:253)
at weblogic.servlet.internal.dd.DescriptorLoader.<init>(DescriptorLoader
.java:215)
at weblogic.servlet.internal.WebAppModule.loadDescriptor(WebAppModule.ja
va:282)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:714)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:555)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:458)
at weblogic.management.deploy.slave.SlaveDeployer.prepareAllStagedApplic
ations(SlaveDeployer.java:490)
at weblogic.management.deploy.slave.SlaveDeployer.initialize(SlaveDeploy
er.java:253)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.initi
alize(DeploymentManagerServerLifeCycleImpl.java:150)
at weblogic.t3.srvr.ServerLifeCycleList.initialize(ServerLifeCycleList.j
ava:54)
at weblogic.t3.srvr.T3Srvr.initialize1(T3Srvr.java:782)
at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:594)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:282)
at weblogic.Server.main(Server.java:32)
>
<Jun 23, 2003 10:10:51 AM CDT> <Error> <Deployer> <149205> <The Slave Deployer
f
ailed to initialize the application titan due to error weblogic.management.Appli
cationException: Prepare failed. Task Id = null
Module Name: titan.war, Error: Could not load web application from 'C:\bea\user_
projects\mydomain\.\myserver\.wlnotdelete\titan\titan.war'
weblogic.management.ApplicationException: Prepare failed. Task Id = null
Module Name: titan.war, Error: Could not load web application from 'C:\bea\user_
projects\mydomain\.\myserver\.wlnotdelete\titan\titan.war'
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:720)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:555)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:458)
at weblogic.management.deploy.slave.SlaveDeployer.prepareAllStagedApplic
ations(SlaveDeployer.java:490)
at weblogic.management.deploy.slave.SlaveDeployer.initialize(SlaveDeploy
er.java:253)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.initi
alize(DeploymentManagerServerLifeCycleImpl.java:150)
at weblogic.t3.srvr.ServerLifeCycleList.initialize(ServerLifeCycleList.j
ava:54)
at weblogic.t3.srvr.T3Srvr.initialize1(T3Srvr.java:782)
at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:594)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:282)
at weblogic.Server.main(Server.java:32)
>It is working now.
For a local entity bean, i was using <ejb-ref> instead of <local-ejb-ref>
Once i changed that, it worlked.
thanks
-vasanth
"Sanjeev Chopra" <[email protected]> wrote:
correct url for doc...
http://e-docs.bea.com/wls/docs81/webapp/web_xml.html#1020090
"Sanjeev Chopra" <[email protected]> wrote in message
news:[email protected]...
Seems like titan.war's WEB-INF/web.xml has an ejb-ref element witha
missing
<home> element .
see http://e-docs/wls/docs81/webapp/web_xml.html#1020090
"Vasanth" <[email protected]> wrote in message
news:[email protected]...
hi,
i get this following error when i start the WL 7.0. The web applicationfails
to start but the ejbs are started properly. This is an example from
the
Monson
Haefel book, on the CMP: Entity bean relationships.
Can anybody tell me what is happening ??
-thanks
-vasanth
Error log:
=============
<Error> <HTTP> <101179> <[HTTP] Error parsing des criptor in Webappplication
"C:\bea\user_projects\mydomain\.\myserver\.wlnotdele
te\titan\titan.war" [Path="C:\eclipse\workspace\titan4\dist\titan.ear",URI="tit
an.war"
weblogic.xml.dom.ChildCountException: missing child home in ejb-ref
atweblogic.xml.dom.DOMUtils.getElementByTagName(DOMUtils.java:147)
at
weblogic.xml.dom.DOMUtils.getValueByTagName(DOMUtils.java:128)
atweblogic.servlet.internal.dd.EJBReference.<init>(EJBReference.java:61
atweblogic.servlet.internal.dd.WebAppDescriptor.<init>(WebAppDescriptor
java:247)
atweblogic.servlet.internal.dd.DescriptorLoader.initializeWebXml(Descri
ptorLoader.java:540)
atweblogic.servlet.internal.dd.DescriptorLoader.<init>(DescriptorLoader
java:253)
atweblogic.servlet.internal.dd.DescriptorLoader.<init>(DescriptorLoader
java:215)
atweblogic.servlet.internal.WebAppModule.loadDescriptor(WebAppModule.ja
va:282)
atweblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:714)
atweblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:555)
atweblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:458)
atweblogic.management.deploy.slave.SlaveDeployer.prepareAllStagedApplic
ations(SlaveDeployer.java:490)
atweblogic.management.deploy.slave.SlaveDeployer.initialize(SlaveDeploy
er.java:253)
atweblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.initi
alize(DeploymentManagerServerLifeCycleImpl.java:150)
atweblogic.t3.srvr.ServerLifeCycleList.initialize(ServerLifeCycleList.j
ava:54)
at weblogic.t3.srvr.T3Srvr.initialize1(T3Srvr.java:782)
at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:594)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:282)
at weblogic.Server.main(Server.java:32)
>
<Jun 23, 2003 10:10:51 AM CDT> <Error> <Deployer> <149205> <The SlaveDeployer
f
ailed to initialize the application titan due to errorweblogic.management.Appli
cationException: Prepare failed. Task Id = null
Module Name: titan.war, Error: Could not load web application from'C:\bea\user_
projects\mydomain\.\myserver\.wlnotdelete\titan\titan.war'
weblogic.management.ApplicationException: Prepare failed. Task Id
= null
Module Name: titan.war, Error: Could not load web application from'C:\bea\user_
projects\mydomain\.\myserver\.wlnotdelete\titan\titan.war'
atweblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:720)
atweblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:555)
atweblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContain
er.java:458)
atweblogic.management.deploy.slave.SlaveDeployer.prepareAllStagedApplic
ations(SlaveDeployer.java:490)
atweblogic.management.deploy.slave.SlaveDeployer.initialize(SlaveDeploy
er.java:253)
atweblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.initi
alize(DeploymentManagerServerLifeCycleImpl.java:150)
atweblogic.t3.srvr.ServerLifeCycleList.initialize(ServerLifeCycleList.j
ava:54)
at weblogic.t3.srvr.T3Srvr.initialize1(T3Srvr.java:782)
at weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:594)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:282)
at weblogic.Server.main(Server.java:32)
> -
Ejb-ref in oc4j 10.1.3.2.0 standalone
Hi,
i asked this before, but i didnt receive any answers. So i looked in more deeply to be more precise.
I developed and deployed a Webservice with JDEV 10.1.3 which looks up EJBs in a remote oc4j. I configured the ejb-references in web.xml and orion-web.xml like shown in the documentation by using ejb-ref-mapping attribute jndi-properties-file and remote-server-ref=true. That works fine in embedded oc4j 10.1.3.2.0.
If i deploy the same application to standalone oc4j 10.1.3.2.0 the application fails wih a naming exception. If i hardcode the jndi-properties again all works fine, so it seems to be a problem of configuration.
So i let print out some information about the InitialContext constructed im the ServiceLocator-Class i use:
ctx = new InitialContext( );
Hashtable ha = ResourceManager.getInitialEnvironment(null);
logger.debug("" + ha.get(InitialContext.PROVIDER_URL));
NamingEnumeration nenum = ctx.listBindings("java:comp/env");
There are indeed some differences between the standalone and the embedded as listed below:
embedded:
07/09/17 17:53:36 ormi://remote-IP: javax.naming.Reference:Reference Class Name: javax.ejb.EJBHome
Type: location
Content: MyBeanFacade
Type: remote-server-ref
Content: true
Type: jndi-properties-file
Content: jndi.properties
07/09/17 17:53:36 ejb: javax.naming.Context:[Context TestWS-org-webapp: {MyBeanFacade=Reference Class Name: javax.ejb.EJBHome
Type: location
Content: MyBeanFacade
Type: remote-server-ref
Content: true
Type: jndi-properties-file
Content: jndi.properties
, ejb/MBeanServerUserEjb=Reference Class Name: javax.ejb.EJBHome
Type: location
Content: MBeanServerUserEjb
standalone:
07/09/17 18:14:06 ormi://IP-ofTheHostOfOC4J:23791/default
07/09/17 18:14:06 MyBeanFacade: javax.naming.Reference:Reference Class Na
me: javax.ejb.EJBHome
Type: location
Content: MyBeanFacade
07/09/17 18:14:06 ejb: javax.naming.Context:[Context webapp: {MyBeanFacad
e=Reference Class Name: javax.ejb.EJBHome
Type: location
Content: MyBeanFacade
, ejb/MBeanServerUserEjb=Reference Class Name: javax.ejb.EJBHome
Type: location
Content: MBeanServerUserEjb
The difference is obvious.
Interestingly http://www.oracle.com/technology/oracleas/schema/orion-web-10_0.xsd
dosnt neither define jndi-properties-file nor remote-server-ref for ejb-ref-mapping. On the other hand, thats what one finds in the documentation.
Another problem is, that originally the oc4j tried to lookup with protocol ormis.
So i had first to delete ssl-port = "23943" from rmi.xml to see ormi.
Now on the first call of the Web Service after start of the server in fact the lookup goes to the remote-IP not to the IP-ofTheHostOfOC4J as written before. But the lookup fails with a namingexception anyway. After the second call the lookup goes to IP-ofTheHostOfOC4J again, even though the application is restarted or redeployed.
Its not very funny to go through this configuration issues with every new revision of the software. Perhaps the lack of feedback in this forum is a hint to open more often a tar than to post herein.
Regards chrisThank u both for your answers.
First of all this is not a Web Service specific issue at all, its about configuring ejb-references for web-components.
The difference was between embedded and standalone.
The reason for this behavior is a bug in 10.1.3.1 standalone.
I think this could be fixed in this 1/2 GB patch from july 2007, so why not upgrading to 10.1.3.3 for which i assume that it includes the fix as Olaf proposed following my proposal ;-)
Anyway you can work around it quite simple:
The reason is that during the deployment the contents of the custom (contained in the ear-file) orion-web.xml is not properly added to the generated orion-web.xml in applications-deployments.
The ejb-remote attrbiute is discarded.
So just add it to the generated orion-web.xml after the deployment and restart the oc4j. Dont redeploy or restart the application cause a redopleyment would overwrite your changes.
Thanks for my help :-)
Chris -
Ejb-ref element references to other beans
Hello,
Can anyone tell me what ejb references to other beans are for? (ejb-ref element).
I am completely missing the point and would be grateful if someone could tell me why I should have the overhead of writing this:
<ejb-ref>
<ejb-ref-name>ejb/waUserMgr</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.reuters.pds.webapp.bl.user.api.WAUserMgrHome</home>
<remote>com.reuters.pds.webapp.bl.user.api.WAUserMgr</remote>
<ejb-link>WAUserMgrEJB</ejb-link>
</ejb-ref>
Any comment welcome..
Julien.Hi,
The <ejb-ref> element is optional, you could use the actual JNDI name instead.
The advantage with using <ejb-ref> is that, if you deploy the bean on another server, probably with a different JNDI name,
your code can still continue using the same name as defined by <ejb-ref-name>.
Internally, the <ejb-ref-name> will be mapped to the actual JNDI location, maybe using symbolic links. -
EJB Refs ( coded name and JNDI name )
Hi
I am just starting to develop EJBs . I can't get to work the EJB refs as expected . In a session bean I have a lookup for an Entity bean . Both beans are in separate JAR files , but in the same ear .
The lookup from session bean to entity bean only works when
the coded name in EJB ref is defined exactly the same as JNDI name for enity bean , also the name in lookup method must be the same in session bean .
To my surprise , the JNDI name for the target EJB , defined in EJB ref for session bean , does not mater at all . Even if I change it to a non existant name , the bean lookup works .
Theoritacally I understand that EJB ref is there to provide a mapping between the name of bean mentioned in code to the actual JNDI name of another bean , at the time of deployment .
The above is happening in J2EE 1.4 envoirment .
Please let me know , what am I doing here that is wrong .
( All examples and tutorials , usually give coded name same as JNDI name ) .
Thanks
TarunHi Tarun,
The ejb-ref-name lives in a different namespace than the global JNDI names. Any names of ejb-refs, ejb-local-refs, resource-refs, etc. are scoped within a particular component's private namespace. All environment references are accessed via the java:comp/env namespace at runtime. So, if your ejb-ref-name(a.k.a "coded name") is ejb/foo in the deployment descriptor, you would access it from the code as follows :
initialContext.lookup("java:comp/env/ejb/foo");
This way, neither the standard deployment descriptor nor the code has any dependency on the global JNDI name. That's a good thing since the decision about which target EJB should be linked to is often not made until deployment time rather than development time. Furthermore, it means if you want to change the linking you can always do it without recompiling your code.
As for the global JNDI names, the first thing to note is that they are completely vendor-specific. That's why they don't appear in the standard deployment descriptor. In the J2EE SDK, each EJB that exposes a Remote view is assigned a global JNDI name in sun-ejb-jar.xml. This JNDI name is assigned from the global namespace of the application server. There's nothing stopping it from also being "ejb/foo", but it refers to a different thing than the "ejb/foo" above.
Now we have an ejb-ref called ejb/foo and an ejb whose JNDI name is ejb/foo, but we haven't linked the two. When it comes to linking, you have two choices:
1. If the target ejb is in the same .ear as the client component, you can use the ejb-link mechanism. This allows you to specify the target ejb by referring to its ejb-name. Since ejb-name is only guaranteed to be unique within an ejb-jar, the syntax allows for you to give the uri of the containing ejb-jar, followed by #, followed by ejb-name.
2. Alternatively, you can specify the global JNDI name of the target ejb using sun-ejb-jar.xml Note that this will work whether the target ejb is in the same .ear or not. However, it's the only option if the target ejb is in a different .ear. In this case, you would create an ejb-ref entry for the client component within the sun-ejb-jar.xml. e.g. :
<ejb>
<ejb-name>MyClientBean</ejb-name>
<ejb-ref>
<ejb-ref-name>ejb/foo</ejb-ref-name>
<jndi-name>ejb/foo</jndi-name>
</ejb-ref>
</ejb>
Again, it's just a coincidence that both names happen to be ejb/foo. They refer to different things.
When you do a global lookup from your code, initialContext.lookup('ejb/foo"), it will work in some environments because you're simply bypassing the level of indirection provided by your component environment and going straight to the global namespace. This is non-portable and not a good idea, since you've now tightly coupled the name of the target ejb to your client component. That means if it changes you need to recompile your code. Hope this helps.
--ken -
Ejb-ref in the deployment descriptor
Could someone help me on how to configure an ejb-reference in the 3 xml
files.
ejb-jar.xml, weblogic-ejb-jar.xml and web.xml
These are the entries for my application, but I get some exception. Can
somebody help me pls?
ejb-jar.xml
<enterprise-beans>
<session id="Abcd">
<small-icon></small-icon>
<ejb-name>ABCD</ejb-name>
<home>AbcdHome</home>
<remote>AbcdRemote</remote>
<ejb-class>AbcdBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
web.xml contains the foll,
<ejb-ref>
<ejb-ref-name>ejb/abcd</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>AbcdHome</home>
<remote>AbcdRemote</remote>
<ejb-link>ABCD</ejb-link>
</ejb-ref>
weblogic.ejb-jar.xml contains,
<weblogic-enterprise-bean>
<ejb-name>ABCD</ejb-name>
<caching-descriptor>
<max-beans-in-free-pool>100</max-beans-in-free-pool>
</caching-descriptor>
<reference-descriptor>
<ejb-reference-description>
<ejb-ref-name>ejb/abcd</ejb-ref-name>
<jndi-name>ejb/ABCD</jndi-name>
</ejb-reference-description>
</reference-descriptor>
</weblogic-enterprise-bean>
But when i run the application, I get the foll exception,
In EJB RemotePlatform, a session or entity bean that has a remote home m
ust be given a JNDI name in the weblogic-ejb-jar.xml descriptor file.
at weblogic.ejb20.compliance.EJBComplianceChecker.check(EJBComplianceChe
cker.java:256)
at weblogic.ejb20.compliance.EJBComplianceChecker.checkDeploymentInfo(EJ
BComplianceChecker.java:220)
at weblogic.ejb20.ejbc.EJBCompiler.complianceCheckJar(EJBCompiler.java:4
52)
at weblogic.ejb20.ejbc.EJBCompiler.checkCompliance(EJBCompiler.java:409)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:202)
at weblogic.ejb20.deployer.Deployer.runEJBC(Deployer.java:296)
at weblogic.ejb20.deployer.Deployer.compileEJB(Deployer.java:676)
at weblogic.ejb20.deployer.Deployer.deploy(Deployer.java:843)
at weblogic.j2ee.EJBComponent.deploy(EJBComponent.java:30)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(Dep
loymentTarget.java:279)
at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeploy
ments(DeploymentTarget.java:233)
at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(
DeploymentTarget.java:193)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy34.updateDeployments(Unknown Source)
at weblogic.management.configuration.ServerMBean_CachingStub.updateDeplo
yments(ServerMBean_CachingStub.java:2706)
at weblogic.management.mbeans.custom.ApplicationManager.startConfigManag
er(ApplicationManager.java:360)
at weblogic.management.mbeans.custom.ApplicationManager.start(Applicatio
nManager.java:152)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy48.start(Unknown Source)
at weblogic.management.configuration.ApplicationManagerMBean_CachingStub
.start(ApplicationManagerMBean_CachingStub.java:479)
at weblogic.management.Admin.startApplicationManager(Admin.java:1138)
at weblogic.management.Admin.finish(Admin.java:561)
at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:501)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:198)
at weblogic.Server.main(Server.java:35)
>
<Jan 31, 2002 3:56:18 PM PST> <Error> <J2EE> <Error deploying application
Defaul
tVoiceApp: Could not load DefaultVoiceApp>
java.lang.reflect.UndeclaredThrowableException:
weblogic.xml.dom.DOMProcessingEx
ception: Could not setup environment for EJBReference or ResourceReference.
Can
not find WEB-INF/weblogic.xml in the Web application.
at weblogic.servlet.internal.WebAppServletContext.initFromDescriptors(We
bAppServletContext.java:1509)
at weblogic.servlet.internal.WebAppServletContext.init(WebAppServletCont
ext.java:871)
at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletCo
ntext.java:806)
at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:413)
at weblogic.j2ee.WebAppComponent.deploy(WebAppComponent.java:74)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:144)
at weblogic.management.mbeans.custom.WebServer.addWebDeployment(WebServe
r.java:76)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy35.addWebDeployment(Unknown Source)
at weblogic.management.configuration.WebServerMBean_CachingStub.addWebDe
ployment(WebServerMBean_CachingStub.java:1093)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:315)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(Dep
loymentTarget.java:279)
at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeploy
ments(DeploymentTarget.java:233)
at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(
DeploymentTarget.java:193)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy34.updateDeployments(Unknown Source)
at weblogic.management.configuration.ServerMBean_CachingStub.updateDeplo
yments(ServerMBean_CachingStub.java:2706)
at weblogic.management.mbeans.custom.ApplicationManager.startConfigManag
er(ApplicationManager.java:360)
at weblogic.management.mbeans.custom.ApplicationManager.start(Applicatio
nManager.java:152)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy48.start(Unknown Source)
at weblogic.management.configuration.ApplicationManagerMBean_CachingStub
.start(ApplicationManagerMBean_CachingStub.java:479)
at weblogic.management.Admin.startApplicationManager(Admin.java:1138)
at weblogic.management.Admin.finish(Admin.java:561)
at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:501)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:198)
at weblogic.Server.main(Server.java:35)
--------------- nested within: ------------------
weblogic.j2ee.DeploymentException: Could not load DefaultVoiceApp - with
nested
exception:
[weblogic.xml.dom.DOMProcessingException: Could not setup environment for
EJBRef
erence or ResourceReference. Cannot find WEB-INF/weblogic.xml in the Web
applic
ation.]
at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:416)
at weblogic.j2ee.WebAppComponent.deploy(WebAppComponent.java:74)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:144)
at weblogic.management.mbeans.custom.WebServer.addWebDeployment(WebServe
r.java:76)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy35.addWebDeployment(Unknown Source)
at weblogic.management.configuration.WebServerMBean_CachingStub.addWebDe
ployment(WebServerMBean_CachingStub.java:1093)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:315)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(Dep
loymentTarget.java:279)
at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeploy
ments(DeploymentTarget.java:233)
at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(
DeploymentTarget.java:193)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy34.updateDeployments(Unknown Source)
at weblogic.management.configuration.ServerMBean_CachingStub.updateDeplo
yments(ServerMBean_CachingStub.java:2706)
at weblogic.management.mbeans.custom.ApplicationManager.startConfigManag
er(ApplicationManager.java:360)
at weblogic.management.mbeans.custom.ApplicationManager.start(Applicatio
nManager.java:152)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy48.start(Unknown Source)
at weblogic.management.configuration.ApplicationManagerMBean_CachingStub
.start(ApplicationManagerMBean_CachingStub.java:479)
at weblogic.management.Admin.startApplicationManager(Admin.java:1138)
at weblogic.management.Admin.finish(Admin.java:561)
at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:501)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:198)
at weblogic.Server.main(Server.java:35)
Can someone help me on what to set in sequence please. Any help would highly
be appreciated.
Thanks in advance.
Regards
AruAaru,
Verify the document structure @
http://e-docs.bea.com/wls/docs61/ejb/reference.html#1026457
jndi-name is of the ejb is missing in your WEJ.xml
and the jndi-name defined under
<reference-descriptor><ejb-reference-description>
</reference-descriptor></ejb-reference-description>
is the reference jndi-name(referenced by this bean)
For more info refere
the weblogic 6.x dtd
http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd
Venki..
Aru wrote:
As per the doc that you referred, the doc too says that the jndi-name should
be within the ejb-reference-description which in turn is inside the
reference-descriptor. I don't get what you tried to say. Am I missing
anything? Could you please make sure that for me.
Just with curiosity I even tried your suggestion but it gives me the
exception as expected,
The XML parser encountered an error in your deployment descriptor. Please
ensure
that your deployment descriptor corresponds to the format in the DTD. The
error
was:
org.xml.sax.SAXParseException: The content of element type
"ejb-reference-descr
iption" is incomplete, it must match "(ejb-ref-name,jndi-name)".
"Venki Seshaadri" <[email protected]> wrote in message
news:[email protected]...
Aaru,
<jndi-name> should be outside <reference-descriptor>
refer to http://e-docs.bea.com/wls/docs61/ejb/reference.html#1026457
<weblogic-enterprise-bean>
<reference-descriptor>...</reference-descriptor>
<jndi-name>ejb/ABCD</jndi-name>
</weblogic-enterprise-bean>
Hope this helps,
Venki
[email protected]
Aru wrote:
FYI, I am using Weblogic 6.1
"Aru" <[email protected]> wrote in message
news:[email protected]...
Could someone help me on how to configure an ejb-reference in the 3 xml
files.
ejb-jar.xml, weblogic-ejb-jar.xml and web.xml
These are the entries for my application, but I get some exception. Can
somebody help me pls?
ejb-jar.xml
<enterprise-beans>
<session id="Abcd">
<small-icon></small-icon>
<ejb-name>ABCD</ejb-name>
<home>AbcdHome</home>
<remote>AbcdRemote</remote>
<ejb-class>AbcdBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
web.xml contains the foll,
<ejb-ref>
<ejb-ref-name>ejb/abcd</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>AbcdHome</home>
<remote>AbcdRemote</remote>
<ejb-link>ABCD</ejb-link>
</ejb-ref>
weblogic.ejb-jar.xml contains,
<weblogic-enterprise-bean>
<ejb-name>ABCD</ejb-name>
<caching-descriptor>
<max-beans-in-free-pool>100</max-beans-in-free-pool>
</caching-descriptor>
<reference-descriptor>
<ejb-reference-description>
<ejb-ref-name>ejb/abcd</ejb-ref-name>
<jndi-name>ejb/ABCD</jndi-name>
</ejb-reference-description>
</reference-descriptor>
</weblogic-enterprise-bean>
But when i run the application, I get the foll exception,
In EJB RemotePlatform, a session or entity bean that has a remote home m
ust be given a JNDI name in the weblogic-ejb-jar.xml descriptor file.
at weblogic.ejb20.compliance.EJBComplianceChecker.check(EJBComplianceChe
cker.java:256)
at weblogic.ejb20.compliance.EJBComplianceChecker.checkDeploymentInfo(EJ
BComplianceChecker.java:220)
at weblogic.ejb20.ejbc.EJBCompiler.complianceCheckJar(EJBCompiler.java:4
52)
at weblogic.ejb20.ejbc.EJBCompiler.checkCompliance(EJBCompiler.java:409)
at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:202)
at weblogic.ejb20.deployer.Deployer.runEJBC(Deployer.java:296)
at weblogic.ejb20.deployer.Deployer.compileEJB(Deployer.java:676)
at weblogic.ejb20.deployer.Deployer.deploy(Deployer.java:843)
at weblogic.j2ee.EJBComponent.deploy(EJBComponent.java:30)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(Dep
loymentTarget.java:279)
at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeploy
ments(DeploymentTarget.java:233)
at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(
DeploymentTarget.java:193)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy34.updateDeployments(Unknown Source)
at weblogic.management.configuration.ServerMBean_CachingStub.updateDeplo
yments(ServerMBean_CachingStub.java:2706)
at weblogic.management.mbeans.custom.ApplicationManager.startConfigManag
er(ApplicationManager.java:360)
at weblogic.management.mbeans.custom.ApplicationManager.start(Applicatio
nManager.java:152)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy48.start(Unknown Source)
at weblogic.management.configuration.ApplicationManagerMBean_CachingStub
.start(ApplicationManagerMBean_CachingStub.java:479)
at weblogic.management.Admin.startApplicationManager(Admin.java:1138)
at weblogic.management.Admin.finish(Admin.java:561)
at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:501)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:198)
at weblogic.Server.main(Server.java:35)
<Jan 31, 2002 3:56:18 PM PST> <Error> <J2EE> <Error deploying
application
Defaul
tVoiceApp: Could not load DefaultVoiceApp>
java.lang.reflect.UndeclaredThrowableException:
weblogic.xml.dom.DOMProcessingEx
ception: Could not setup environment for EJBReference or
ResourceReference.
Can
not find WEB-INF/weblogic.xml in the Web application.
at weblogic.servlet.internal.WebAppServletContext.initFromDescriptors(We
bAppServletContext.java:1509)
at weblogic.servlet.internal.WebAppServletContext.init(WebAppServletCont
ext.java:871)
at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletCo
ntext.java:806)
at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:413)
at weblogic.j2ee.WebAppComponent.deploy(WebAppComponent.java:74)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:144)
at weblogic.management.mbeans.custom.WebServer.addWebDeployment(WebServe
r.java:76)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy35.addWebDeployment(Unknown Source)
at weblogic.management.configuration.WebServerMBean_CachingStub.addWebDe
ployment(WebServerMBean_CachingStub.java:1093)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:315)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(Dep
loymentTarget.java:279)
at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeploy
ments(DeploymentTarget.java:233)
at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(
DeploymentTarget.java:193)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy34.updateDeployments(Unknown Source)
at weblogic.management.configuration.ServerMBean_CachingStub.updateDeplo
yments(ServerMBean_CachingStub.java:2706)
at weblogic.management.mbeans.custom.ApplicationManager.startConfigManag
er(ApplicationManager.java:360)
at weblogic.management.mbeans.custom.ApplicationManager.start(Applicatio
nManager.java:152)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy48.start(Unknown Source)
at weblogic.management.configuration.ApplicationManagerMBean_CachingStub
.start(ApplicationManagerMBean_CachingStub.java:479)
at weblogic.management.Admin.startApplicationManager(Admin.java:1138)
at weblogic.management.Admin.finish(Admin.java:561)
at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:501)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:198)
at weblogic.Server.main(Server.java:35)
--------------- nested within: ------------------
weblogic.j2ee.DeploymentException: Could not load DefaultVoiceApp - with
nested
exception:
[weblogic.xml.dom.DOMProcessingException: Could not setup environment
for> >>>>EJBRef>>>>erence or ResourceReference. Cannot find WEB-INF/weblogic.xml in the Web>>>>applic>>>>ation.
at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:416)
at weblogic.j2ee.WebAppComponent.deploy(WebAppComponent.java:74)
at weblogic.j2ee.Application.addComponent(Application.java:160)
at weblogic.j2ee.J2EEService.addDeployment(J2EEService.java:117)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:144)
at weblogic.management.mbeans.custom.WebServer.addWebDeployment(WebServe
r.java:76)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy35.addWebDeployment(Unknown Source)
at weblogic.management.configuration.WebServerMBean_CachingStub.addWebDe
ployment(WebServerMBean_CachingStub.java:1093)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(Depl
oymentTarget.java:315)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(Dep
loymentTarget.java:279)
at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeploy
ments(DeploymentTarget.java:233)
at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(
DeploymentTarget.java:193)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy34.updateDeployments(Unknown Source)
at weblogic.management.configuration.ServerMBean_CachingStub.updateDeplo
yments(ServerMBean_CachingStub.java:2706)
at weblogic.management.mbeans.custom.ApplicationManager.startConfigManag
er(ApplicationManager.java:360)
at weblogic.management.mbeans.custom.ApplicationManager.start(Applicatio
nManager.java:152)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMB
eanImpl.java:606)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl
.java:590)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(Configurat
ionMBeanImpl.java:350)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
55)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:15
23)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:444)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:185)
at $Proxy48.start(Unknown Source)
at weblogic.management.configuration.ApplicationManagerMBean_CachingStub
.start(ApplicationManagerMBean_CachingStub.java:479)
at weblogic.management.Admin.startApplicationManager(Admin.java:1138)
at weblogic.management.Admin.finish(Admin.java:561)
at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:501)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:198)
at weblogic.Server.main(Server.java:35)
Can someone help me on what to set in sequence please. Any help would
highly
be appreciated.
Thanks in advance.
Regards
Aru -
Missing ejb relation description file after deploying ejb module
when i deploye a ejb module to oc4j_extended_1013_dp4 successfully, it's can't find the file ejb-jar.xml that descript ejb relations and navigators.
why?
how can i defense it ?however, i repeat my question
i use two file descript ejb module in MEAT-INF directory, one name ejb-jar.xml , another name orion-ejb-jar.xml
my ejb jar-package contrained them.
after deploying , i only find orion-ejb-jar.xml in application-deployments/myapp/myejb -
Ejb-ref and JNDI lookup problem
Hi,
I use WLS6.1sp2. I created one EntityBean and SessionBean jar files. I tried to
use session bean to refer entity bean, I failed. The details are as following:
In EntityBean's weblogic-ejb-jar.xml, I set:
<jndi-name>cabin.CabinHome</jndi-name>
In sessionbean's ejb-jar.xml
<ejb-ref>
<ejb-ref-name>ejb/CabinHome</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.titan.cabin.CabinHome</home>
<remote>com.titan.cabin.Cabin</remote>
</ejb-ref>
In sessionbean's weblogic-ejb-jar.xml
<reference-descriptor>
<ejb-reference-description>
<ejb-ref-name>ejb/CabinHome</ejb-ref-name>
<jndi-name>ejb/CabinHome</jndi-name>
</ejb-reference-description>
</reference-descriptor>
At sessionbean's client, I use
javax.naming.Context jndiContext = getInitialContext();
Object obj = jndiContext.lookup("java:comp/env/ejb/CabinHome");
When I run client file, I get the following error message:
- with nested exception:
[javax.naming.LinkException: [Root exception is javax.naming.NameNotFoundException:
Unable to resolve ejb.CabinHome Resolved: '' Unresolved:'ejb' ; remaining name
'CabinHome']; Link Remaining Name: 'ejb/CabinHome']>
javax.naming.LinkException: . Root exception is javax.naming.NameNotFoundException:
Unable to resolve ejb.CabinHome Resolved: '' Unresolved:'ejb' ; remaining name
'CabinHome'
<<no stack trace available>>
--------------- nested within: ------------------
javax.ejb.EJBException
- with nested exception:
[javax.naming.LinkException: [Root exception is javax.naming.NameNotFoundException:
Unable to resolve ejb.CabinHome Resolved: '' Unresolved:'ejb' ; remaining name
'CabinHome']; Link Remaining Name: 'ejb/CabinHome']
at com.titan.travelagent.TravelAgentBean.listCabins(TravelAgentBean.java:45)
at com.titan.travelagent.TravelAgentBean_a4c3ph_EOImpl.listCabins(TravelAgentBean_a4c3ph_EOImpl.java:37)
at com.titan.travelagent.TravelAgentBean_a4c3ph_EOImpl_WLSkel.invoke(Unknown
Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
####<Feb 1, 2002 11:32:40 PM PST> <Info> <Management> <dj> <travelServer> <ExecuteThread:
'14' for queue: 'default'> <system> <> <140009> <Configuration changes for domain
saved to the repository.>
Do you know what's wrong? how to fix this problem?
Thanks in advance.
DJSlava,
I took "cabin." out from weblogic-ejb-jar.xml, I got the same error.
DJ
"Slava Imeshev" <[email protected]> wrote:
Hi DJ,
I think you don't need "cabin." in weblogic-ejb-jar.xml :
<jndi-name>cabin.CabinHome</jndi-name>
Regards,
Slava Imeshev
"DJ" <[email protected]> wrote in message
news:[email protected]...
Hi,
I use WLS6.1sp2. I created one EntityBean and SessionBean jar files.I
tried to
use session bean to refer entity bean, I failed. The details are asfollowing:
In EntityBean's weblogic-ejb-jar.xml, I set:
<jndi-name>cabin.CabinHome</jndi-name>
In sessionbean's ejb-jar.xml
<ejb-ref>
<ejb-ref-name>ejb/CabinHome</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.titan.cabin.CabinHome</home>
<remote>com.titan.cabin.Cabin</remote>
</ejb-ref>
In sessionbean's weblogic-ejb-jar.xml
<reference-descriptor>
<ejb-reference-description>
<ejb-ref-name>ejb/CabinHome</ejb-ref-name>
<jndi-name>ejb/CabinHome</jndi-name>
</ejb-reference-description>
</reference-descriptor>
At sessionbean's client, I use
javax.naming.Context jndiContext = getInitialContext();
Object obj = jndiContext.lookup("java:comp/env/ejb/CabinHome");
When I run client file, I get the following error message:
- with nested exception:
[javax.naming.LinkException: [Root exception is
javax.naming.NameNotFoundException:>> Unable to resolve ejb.CabinHome Resolved: '' Unresolved:'ejb' ; remaining>name>> 'CabinHome'; Link Remaining Name: 'ejb/CabinHome']>
javax.naming.LinkException: . Root exception isjavax.naming.NameNotFoundException:
Unable to resolve ejb.CabinHome Resolved: '' Unresolved:'ejb' ; remainingname
'CabinHome'
<<no stack trace available>>
--------------- nested within: ------------------
javax.ejb.EJBException
- with nested exception:
[javax.naming.LinkException: [Root exception is
javax.naming.NameNotFoundException:>> Unable to resolve ejb.CabinHome Resolved: '' Unresolved:'ejb' ; remaining>name>> 'CabinHome'; Link Remaining Name: 'ejb/CabinHome']
atcom.titan.travelagent.TravelAgentBean.listCabins(TravelAgentBean.java:45)
atcom.titan.travelagent.TravelAgentBean_a4c3ph_EOImpl.listCabins(TravelAgentBe
an_a4c3ph_EOImpl.java:37)
atcom.titan.travelagent.TravelAgentBean_a4c3ph_EOImpl_WLSkel.invoke(Unknown
Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
atweblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java
:93)
atweblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
atweblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:2
2)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
####<Feb 1, 2002 11:32:40 PM PST> <Info> <Management> <dj> <travelServer><ExecuteThread:
'14' for queue: 'default'> <system> <> <140009> <Configuration changesfor
domain
saved to the repository.>
Do you know what's wrong? how to fix this problem?
Thanks in advance.
DJ -
ejb-ref problems in WLE 5.0.1
Platform : WLE 5.0.1 on Solaris 2.6
I'm having a problem with EJB deployment in WLE 5.1. The ejb-spec
specifies that you must add <ejb-ref> entries for each entity or
session bean in your ejb-jar.xml that references another bean. So, in
this case both A and B reference C in the code.
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>C</ejb-name>
<home>com.xxx.CHome</home>
<remote>com.xxx.C</remote>
<ejb-class>com.xxx.CBean</ejb-class>
</entity>
<session>
<ejb-name>B</ejb-name>
<home>com.xxx.BHome</home>
<remote>com.xxx.B</remote>
<ejb-class>com.xxx.BBean</ejb-class>
<ejb-ref>
<ejb-ref-name>ejb/CBean</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.xxx.CHome</home>
<remote>com.xxx.C</remote>
<ejb-link>C</ejb-link>
</ejb-ref>
</session>
<session>
<ejb-name>A</ejb-name>
<home>com.xxx.AHome</home>
<remote>com.xxx.A</remote>
<ejb-class>com.xxx.ABean</ejb-class>
<ejb-ref>
<ejb-ref-name>ejb/CBean</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.xxx.CHome</home>
<remote>com.xxx.C</remote>
<ejb-link>C</ejb-link>
</ejb-ref>
</session>
</enterprise-beans>
<ejb-jar>
In this case, upon starting the JavaXAServer I get a
javax.naming.NameAlreadyBoundException thrown. The EJB spec
specifically states that I should be able to refer to C with the same
name from A and B. Is this a bug?
I can get around this by changing the name of the second reference to
something like "ejb/CBean2".
Additionally, I get a NameNotFoundException when looking up the
reference from within A or B as follows :-
Context ic = new InitialContext();
Object ob = ic.lookup("java:comp/env/ejb/CBean");
The only way I can work around this, is to construct the
InitialContext using the 'client' view, passing
com.beasys.jndi.WLEInitialContextFactory as the factory name, passing
the ISL host/port in the PROVIDER_URL and then using the JNDI names
for the lookup.
What's going wrong?
TIAthis seems to be a WLE 5.0.1 bug
Developer wrote in message <[email protected]>...
Platform : WLE 5.0.1 on Solaris 2.6
I'm having a problem with EJB deployment in WLE 5.1. The ejb-spec
specifies that you must add <ejb-ref> entries for each entity or
session bean in your ejb-jar.xml that references another bean. So, in
this case both A and B reference C in the code.
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>C</ejb-name>
<home>com.xxx.CHome</home>
<remote>com.xxx.C</remote>
<ejb-class>com.xxx.CBean</ejb-class>
</entity>
<session>
<ejb-name>B</ejb-name>
<home>com.xxx.BHome</home>
<remote>com.xxx.B</remote>
<ejb-class>com.xxx.BBean</ejb-class>
<ejb-ref>
<ejb-ref-name>ejb/CBean</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.xxx.CHome</home>
<remote>com.xxx.C</remote>
<ejb-link>C</ejb-link>
</ejb-ref>
</session>
<session>
<ejb-name>A</ejb-name>
<home>com.xxx.AHome</home>
<remote>com.xxx.A</remote>
<ejb-class>com.xxx.ABean</ejb-class>
<ejb-ref>
<ejb-ref-name>ejb/CBean</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.xxx.CHome</home>
<remote>com.xxx.C</remote>
<ejb-link>C</ejb-link>
</ejb-ref>
</session>
</enterprise-beans>
<ejb-jar>
In this case, upon starting the JavaXAServer I get a
javax.naming.NameAlreadyBoundException thrown. The EJB spec
specifically states that I should be able to refer to C with the same
name from A and B. Is this a bug?
I can get around this by changing the name of the second reference to
something like "ejb/CBean2".
Additionally, I get a NameNotFoundException when looking up the
reference from within A or B as follows :-
Context ic = new InitialContext();
Object ob = ic.lookup("java:comp/env/ejb/CBean");
The only way I can work around this, is to construct the
InitialContext using the 'client' view, passing
com.beasys.jndi.WLEInitialContextFactory as the factory name, passing
the ISL host/port in the PROVIDER_URL and then using the JNDI names
for the lookup.
What's going wrong?
TIA -
Ejb-ref and ejb-local-ref tags
Hi everyone,
Can someone please tell me
1) Is it necessary for me to define ejb-ref or ejb-local-ref tags if I am referering one ejb from other ejb? I mean to say is it mandatory that I should have these deployment descriptor tags?
2) What is purpose of ejb-link tag ?Hi everyone,
Can someone please tell me
1) Is it necessary for me to define ejb-ref or
ejb-local-ref tags if I am referering one ejb from
other ejb? I mean to say is it mandatory that I should
have these deployment descriptor tags?Yes, to write portable J2EE components, every time you have a dependency on an ejb, you need to declare an ejb-ref (for a Remote EJB client) or ejb-local-ref (for a Local EJB client). This is true no matter what kind of J2EE component is accessing the ejb (Application Client, JSP, Servlet, or another ejb).
Think of the ejb-ref or ejb-local-ref as a pointer. It's different from the thing that is pointed to. Instead, it represents a dependency between a client component and a target ejb.
2) What is purpose of ejb-link tag ?Every ejb-ref or ejb-local-ref must be resolved to unambiguously point to the target ejb. The ejb-link tag is one way to resolve this dependency for the case where the target ejb lives in the same .ear as the referring component. The ejb-link tag is the ejb-name (or <ejb-jar uri>#<ejb-name>) of the target ejb.
Note that this means ejb-link is the ONLY way to resolve an ejb-local-ref, since by definition Local EJB access can only take place between two ejbs within the same .ear or a web component/ejb that live within the same .ear.
For ejb-refs, you can use ejb-link if the target ejb is within the same .ear. If not, the ejb specification does not prescribe how the dependency is resolved. It's left up to the J2EE implementation. The most common approach is for the vendor to provide a product-specific runtime .xml element that resolves the ejb-ref by associating it with the global JNDI name of the target EJB. That's the approach used in the J2EE SDK and Sun Java System Application Server.
Kenneth Saks
J2EE SDK Team
SUN Microsystems
Maybe you are looking for
-
Display won't work in Classic! WHY?
I tried starting OS 9 Classic on my G4 using the clear plastic Apple display. The screen was Black. I finally got my screen back up had to kook up a different monitor to fix things. For the longest i just haven't used OS 9 BUT I need to open some old
-
Connecting a second monitor to an Envy All-In-One
Please excuse my ignorance on this topic in advance. I just purchased an HP Envy All-In-One. Model 23o014; Product F3E94AA#ABA. I'm running Windows 8.1. I'm very happy with my purchase so far. I also purchased an AOC E2470Sw monitor and would lik
-
Making EXEcutable file in Forms 4.5 / 5 /6
Dear Experts I am using Forms 4.5 & Reports 2.5 for Oracle 7.3.2 database. Can I make EXEcutable file to run the application directly ? If it is not possible in this version, Is it possible in Forms ver 5 ? ver 6 ? If so, what is the procedure / menu
-
@prompt not functioning in where clause
I have attempted to use the following in a where clause of a dimension object: ORGANIZATION_DIM.ORGANIZATION_ID = @Prompt('Which Organization?','A','Cash Receipts\Organization ID',mono,constrained,not_persistent,{'ORG0001'}) When I use the object in
-
Biometric solution in apex oracle
Hello Sir, I want to access bio metricc feature in Apex application . How can be use it and do any connectivity or through any procedure . hw can we attached biometric system to apex oracle application . Plz give me any solution . Thanx