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
Similar Messages
-
Difference between resource-ref and resource-env-ref ?
Hello,
Can anyone tell me what the difference is between <resource-ref> and <resource-env-ref>? (in ejb-jar.xml)
Thanks in advance,
Julien Martin.Check out this URL. You will find out your answer.
http://docs.sun.com/source/816-7156-10/agj2eres.html
Thanks -
What is the difference between ejb reference and ejb handle?
Hi:
I am newbie for J2EE.
I want to know what is the difference between ejb reference and ejb handle
from the client view and from the container view?
Very Thanks!
StiveHi John,,
1) Ejb Object Handle are nothing but a long lived proxy for the
ejb object, using this handle user can disconnect from the Ejb Server/Container
at any time
and after some time using the same handle he can able to resume the conversational
state
with the server / container where he was been disconnected From.
And there are currently two Handles , HomeHandle and Handle for EjbHomeObject
and EjbObject
Respectively. Both these handles have Persistent reference to the EJB Object
2) Ejb Reference is used to lookup a bean from other Enterprise Bean
Ejb reference is a nickname for the JNDI Location that you want to lookup a bean.
your code will looks up a Home object via using this nickname
and the deployer will bind the
nickname to the JNDI location of its choice
EJb Reference are declared in the deployment descriptor
Regards
Karthikeyan Gangadharan
SIP Technologies, Chennai
E-mail-ID : [email protected]
"John Stive" <[email protected]> wrote:
>
Hi:
I am newbie for J2EE.
I want to know what is the difference between ejb reference and ejb
handle
from the client view and from the container view?
Very Thanks!
Stive -
How will be the weblogic-ejb-jar and ejb-jar xml for EJB Local Interface?
Hi,
I have one ear application which is using Stateless Session Beans. I don't have any Bean to Bean communication . At present, the client is invoking remote methods thro Home/Remote interfaces. My doubt is , shall I implement EJBLocal home/ local interface to obtain this same functionality cos, in this app, both client and EJb bean have been deployed in same JVM. Can Local interfaces only be applicable to Bean - Bean relation ship?If LocalHome/Local interfaces can be implemented in my scenario, then may I know how will be the ejb-jar.xml and weblogic-ejb-jar.xml?
thanks and regards,
Venkat.Local interfaces are for communication between ejbs and their clients when both are in the same JVM. The clients can be normal clients, jsps, servlets, and other ejbs. If the client is not in the same JVM you cannot use local interfaces even though your client is another ejb.
Advantage of using local interface is it reduces the network overhead.
For more information you can download Mastering Enterprise Java Beans Third Edition by Ed Roman. You can go through 45
You can download pdf version from.
http://www.theserverside.com/books/wiley/masteringEJB/index.tss.
Let me know the URL of the ejb doc that you referred.
Thanks.. -
Servlet jndi lookup to remote EJB, servlet and EJB not in the same application
Hi,
I think that the subject explain my problem.
I have Oracle IAS9i 9.0.2.0.0, and JDeveloper 9.0.2.829
I have deployed and EJB in IAS9i and i want to use from the developer machines, which have JDeveloper.
how can i to do remote calls from JDeveloper?.
I have modifed the orion-application.xml, and added remote=true.
I have modifed the rmi.xml and added the hosts where the Jdeveloper placed.
Any ideas?
Thanks and cheers
P.D The app server and jdeveloper are in the same net.
if it is posible replys me to [email protected] too.Steps to access a remote EJB from within OC4J
++++++++++++++++++++++++++++++++++++++++++++++
1) Deploy EJB application (ApplicationRemote) to remote container (REMOTE)
"java -jar admin.jar -deploy ormi://REMOTE.hostname:REMOTE.port REMOTE.username REMOTE.password -deploy -file ApplicationRemote.ear
-deploymentName ApplicationRemote"
2) Ensure that local application (ApplicationLocal) has ejb-ref tags for remote EJBs accessed (in web.xml or ejb-jar.xml)
3) Deploy to local container (LOCAL) an empty application (ApplicationEmpty) with the same name as the remote application (ApplicationRemote)
"java -jar admin.jar -deploy ormi://LOCAL.hostname:LOCAL.port LOCAL.username LOCAL.password -deploy -file ApplicationEmpty.ear -deploymentName
ApplicationRemote"
5) Deploy local application (ApplicationLocal) to local container (LOCAL)
"java -jar admin.jar -deploy ormi://LOCAL.hostname:LOCAL.port LOCAL.username LOCAL.password -deploy -file ApplicationLocal.ear -deploymentName
ApplicationLocal"
4)Restart local container
ApplicationEmpty should consist of just an application.xml file - no modules. The same file can be deployed with different application names for all the remote
applications that must be accessed.
ApplicationLocal should access the remote EJB by using the following JNDI properties
java.naming.factory.initial = "com.evermind.server.rmi.RMIInitialContextFactory"
java.naming.provider.url = "ormi://REMOTE.hostname:REMOTE.port/ApplicationRemote"
java.naming.security.principal = "REMOTE.username"
java.naming.security.credentials = "REMOTE.password"
regards
Debu Panda -
Error trying to deserialize EJB HomeHandle and EJB Handle classes
I get the following exception when I try to deserialize both a javax.ejb.HomeHandle and a javax.ejb.Handle. I serialize and immediately deserialize within the same application using the same classloader so there are not alot of external variables that may cause the problem. Any ideas on why I can't deserialize an ejb handle?
The reason I am doing this is to try and get around the need to reference another application just to call a remote method in that application. I want to serialize the remote home interface handle or the remote component interface handle and deserialize it using my local application classloader. Does anybody know if this would work?
#1#java.lang.ClassNotFoundException: Loader /L_service:ejb could not load class turtle.registry.SBRegistryRemoteHome
at com.sap.vmc.core.impl.sapjvm.sharing.NativeSharedClassLoaderImpl.loadClass(NativeSharedClassLoaderImpl.java:609)
at java.lang.ClassLoader.loadClass(ClassLoader.java:265)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:333)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at java.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java:656)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1499)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1462)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1698)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at com.sap.engine.services.ejb3.runtime.impl.LocalHandleDelegate.readStub(LocalHandleDelegate.java:177)
at com.sap.engine.services.ejb3.runtime.impl.ServerHandleDelegate.readStub(ServerHandleDelegate.java:64)
at com.sap.engine.services.ejb3.runtime.impl.LocalHandleDelegate.readEJBHome(LocalHandleDelegate.java:101)
at com.sap.engine.services.ejb3.runtime.impl.StatelessHomeHandleImpl.readObject(StatelessHomeHandleImpl.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1818)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at turtle.common.util.SerializationHelper.convertObject(SerializationHelper.java:43)
at turtle.common.server.connect.RemoteFactory.getRemoteSAPWAS(RemoteFactory.java:206)
at turtle.common.server.connect.RemoteFactory.getRemote(RemoteFactory.java:46)
at turtle.common.server.connect.RemoteProxyFactory.getRemote(RemoteProxyFactory.java:99)
at turtle.common.server.connect.RemoteProxyFactory.create(RemoteProxyFactory.java:91)
at turtle.common.server.connect.RemoteProxyFactory.createProxy(RemoteProxyFactory.java:52)
at turtle.server.runtime.registry.RegistryFacade.connectToRegistry(RegistryFacade.java:932)
at turtle.server.runtime.registry.RegistryFacade.getGenericRegistryBI(RegistryFacade.java:987)
at turtle.server.runtime.registry.RegistryFacade.unbindObjectsInProject(RegistryFacade.java:857)
at turtle.registry.ProjectRegistrar$1$1.run(ProjectRegistrar.java:130)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:337)
at turtle.common.security.auth.AuthenticatorBase.doAs(AuthenticatorBase.java:387)
at turtle.registry.ProjectRegistrar$1.run(ProjectRegistrar.java:172)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)Has anyone been able to get this to work? Or can anyone confirm that this is a bug?
As a simpler test, I modified the UserManagementBean of the Car Rental example application. I added some code in the register method that serializes and deserializes the Handle object obtained from the SessionContext.getEJBObject().getHandle() method. The serialization completes without issue. However, I get the same error when trying to deserialize the Handle object:
java.lang.ClassNotFoundException: Loader /L_service:ejb could not load class com.sap.engine.examples.epf.ejb.controller.customer.UserManagementHome
at com.sap.vmc.core.impl.sapjvm.sharing.NativeSharedClassLoaderImpl.loadClass(NativeSharedClassLoaderImpl.java:609)
at java.lang.ClassLoader.loadClass(ClassLoader.java:265)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:333)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at java.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java:656)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1499)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1462)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1698)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at com.sap.engine.services.ejb3.runtime.impl.LocalHandleDelegate.readStub(LocalHandleDelegate.java:177)
at com.sap.engine.services.ejb3.runtime.impl.ServerHandleDelegate.readStub(ServerHandleDelegate.java:64)
at com.sap.engine.services.ejb3.runtime.impl.LocalHandleDelegate.readEJBHome(LocalHandleDelegate.java:101)
at com.sap.engine.services.ejb3.runtime.impl.StatelessHomeHandleImpl.readObject(StatelessHomeHandleImpl.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1818)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1917)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1841)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1718)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1304)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at com.sap.engine.examples.epf.ejb.controller.customer.SerializationUtils.deSerialize(SerializationUtils.java:33)
at com.sap.engine.examples.epf.ejb.controller.customer.SerializationUtils.deepClone(SerializationUtils.java:59)
at com.sap.engine.examples.epf.ejb.controller.customer.UserManagementBean.register(UserManagementBean.java:75) -
Hello,
I want to pass over the locale from the web tier to the ejb tier.
1. how do I do that?
2. then how do I set the locale in the ejb tier?
Thanks in advance,
Julien Martin.
ps. Here is what I have in my jboss console:
Can't find bundle for base name arcoiris/resources/messages.es, locale fr_FR
Message was edited by:
balteoHey!
Did you get the solution for that ? i have same kind of requirement...
please share how did you achive that. -
Many EJB's and ejb-jar.xml
I will have about 20 EJB's who have relationships with each other.
Now all those EJB's come in the same deployment descriptor, causing it to grow to over 2000 lines.
Is it possible to split the ejb-jar.xml in several ejb-jar.xml's? One for every EJB or one for every EJB group as a business object pattern.
Or is there another solution?No - this is a case of "what you sow, you reap." In other words, if you have that many relations, you have a large ejb-jar.xml, since all the Entities involved in the relations must be in the same .jar file. What I would try to do is break down the relations into logical groupings and, ideally, those groups would not have relations with each other. Then split those groups out into separate deployments. Or if the relation between two groups is "light" (maybe only one), you can manually handle the relation through remote calls, instead of using CMR.
-
Hi,
I think I found a bug when using EJB-QL with oc4j.
If the name of your bean (<ejb-name> tag) is set to something with a "dot". E.g. "mytests.MyLocalBean" then the finder methods (using EJB-QL) will return an SQL exception. The exception says that no table named "MyLocalBean" can be found. The "mytests" prefix seems to be missing in the dynamically generated SQL statement.
If I change the bean name to "MylocalBean" everything works fine.
I'm currently using Iterbase DB, but I think this is an error in the oc4j container.
/johanJohan -- I will take a look at it.
Thanks -- Jeff -
Hi
Can someone explain me exact use of this <ejb-local-ref>
tag. I have seen ejb running without this config also and most of the professionally written ejb have this. When should this be used and why.
Also i see <ejb-link> tag being used. I beleive if want to reference another ejb in another jar of the same ear, this should be used. I would appreciate if someone can explain me these 2 things.
ThanksCan someone explain me exact use of this
<ejb-local-ref>
tag. I have seen ejb running without this config also
and most of the professionally written ejb have this.
When should this be used and why.ejb-ref is a way of getting reference to another ejb from within the bean code in one ejb. It provides a way to link ejbs based on ejb names rather than jndi-names.
you can also refer to another ejb using the jndi name of the target ejb by looking it up from the global jndi tree. However, this is not a clean way, bcos the jndi name is the deployer's responsibility and could change. If you hook different ejbs using the jndi-names it could be quite inflexible and also you may not be able to take advantage of the container's colocation optimizations.
To link ejbs within the same J2ee application in a flexible way and to take advantage of the container's optimizations, you can use ejb-refs and ejb-links.
hope this helps,
Mihir
Also i see <ejb-link> tag being used. I beleive if
want to reference another ejb in another jar of the
same ear, this should be used. I would appreciate if
someone can explain me these 2 things.
Thanks -
ejb-local-ref where to put this tag in ejb-jar.xml ??
I have an ejb-jar.xml that looks like this. I have had no problem with remote interfaces. Now I want the bean to have a local interface too.
Just let me know where the tag I have mentioned for the <ejb-local-ref> has to be put into.
When I compile this file it throws me an error which i have shown below the output of the ejb-jar.xml file
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>IDMaster</ejb-name>
<home>maxateev.mondial.brg.idmaster.IDMasterHome</home>
<remote>maxateev.mondial.brg.idmaster.IDMaster</remote>
<local-home>maxateev.mondial.brg.idmaster.IDMasterLocalHome</local-home>
<local>maxateev.mondial.brg.idmaster.IDMasterLocal</local>
<ejb-class>maxateev.mondial.brg.idmaster.IDMasterEJB</ejb-class>
<persistence-type>Container</persistence-type>
<ejb-local-ref>
<ejb-ref-name>ejb/IDMasterLocalHome</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>maxateev.mondial.brg.idmaster.IDMasterLocalHome</local-home>
<local>maxateev.mondial.brg.idmaster.IDMasterLocal</local>
</ejb-local-ref>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>IDMaster</abstract-schema-name>
<cmp-field>
<field-name>idPrefix</field-name>
</cmp-field>
<cmp-field>
<field-name>idValue</field-name>
</cmp-field>
<primkey-field>idPrefix</primkey-field>
<query>
<query-method>
<method-name>findAllIDMasters</method-name>
<method-params/>
</query-method>
<ejb-ql><![CDATA[SELECT OBJECT (f) FROM IDMaster as f]]></ejb-ql>
</query>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>IDMaster</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
I have also added the following tag in the weblogic-jar.xml
<local-jndi-name>IDMasterEJB.IDMasterLocalHome</local-jndi-name>
Just let me know whether I am correct
On compilation (using ant utility) the error thrown is like this :
ejbc:
[java] ERROR: Error parsing 'ejb-jar.xml' line 47: The content of element type "entity" must ma
tch "(description?,display-name?,small-icon?,large-icon?,ejb-name,home?,remote?,local-home?,local?,e
jb-class,persistence-type,prim-key-class,reentrant,cmp-version?,abstract-schema-name?,cmp-field*,pri
mkey-field?,env-entry*,ejb-ref*,ejb-local-ref*,security-role-ref*,security-identity?,resource-ref*,r
esource-env-ref*,query*)".
[java] ERROR: ejbc found errors
[java] Java Result: 1
Kindly Help !!!
Thanks n regards
SajivThis should take care of it
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>IDMaster</ejb-name>
<home>maxateev.mondial.brg.idmaster.IDMasterHome</home>
<remote>maxateev.mondial.brg.idmaster.IDMaster</remote>
<local-home>maxateev.mondial.brg.idmaster.IDMasterLocalHome</local-home>
<local>maxateev.mondial.brg.idmaster.IDMasterLocal</local>
<ejb-class>maxateev.mondial.brg.idmaster.IDMasterEJB</ejb-class>
<persistence-type>Container</persistence-type>
<ejb-local-ref>
<ejb-ref-name>ejb/IDMasterLocalHome</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>maxateev.mondial.brg.idmaster.IDMasterLocalHome</local-home>
<local>maxateev.mondial.brg.idmaster.IDMasterLocal</local>
</ejb-local-ref>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>IDMaster</abstract-schema-name>
<cmp-field>
<field-name>idPrefix</field-name>
</cmp-field>
<cmp-field>
<field-name>idValue</field-name>
</cmp-field>
<primkey-field>idPrefix</primkey-field>
<ejb-local-ref>
<ejb-ref-name>ejb/IDMasterLocalHome</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>maxateev.mondial.brg.idmaster.IDMasterLocalHome</local-home>
<local>maxateev.mondial.brg.idmaster.IDMasterLocal</local>
</ejb-local-ref>
<query>
<query-method>
<method-name>findAllIDMasters</method-name>
<method-params/>
</query-method>
<ejb-ql><![CDATA[SELECT OBJECT (f) FROM IDMaster as f]]></ejb-ql>
</query>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>IDMaster</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar> -
Hi!
Im a novice at this environment so I have been running the EJB Tutorial provided
with 8.1
Everything works as i should until I deploy the application.
I get a:
weblogic.management.DeploymentException: Could not setup environment - with nest
ed exception:
[weblogic.deployment.EnvironmentException: [J2EE:160101]Error: The ejb-link 'Ban
dsExampleEJB.jar#Music' declared in the ejb-ref or ejb-local-ref 'ejb/MusicLink'
in the application module 'webapp' could not be resolved. The target EJB for
th
e ejb-ref could not be found. Please ensure the link is correct.]
The code for the ejb-local-ref is as folows:
<ejb-local-ref>
<ejb-ref-name>ejb/MusicLink</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>examples.ejb20.relationships.bands.MusicHome</local-home>
<local>examples.ejb20.relationships.bands.Music</local>
<ejb-link>BandsExampleEJB.jar#Music</ejb-link>
</ejb-local-ref>
What can I be doing wrong?
/PeterGunnar,
There are a few mistakes in the tutorial that will
be fixed for the upcoming SP2 release. As far as the tutorial code
itself goes I've reproduced this problem by following the tutorial
exactly as its stated and there's a couple of things that can be
what's causing all the problems for you and others.
The easiest solution is to use the supplied MusicBean source that's
supplied with the tutorial. That bean code is correct and functional.
The tutorial is missing some of the steps required to reproduce that
exact bean code.
I'll cover all the errors I found. One of these is quite possibly what's
tripping you and others up.
1) The getBands() and addBand() method should be made to be local
methods instead of remote methods.
So in step 4 after you've created these methods change the interface
exposure
to be local either directly in the source by changing the tag, or in the
design view
by right clicking the method and selecting "local". This will show the
methods
with a yellow diamond next to them in the design view.
You also need to enable local interfaces as well as update the local
interface and local home interface.
To do this:
1) switch to the design view
2) click on the EJB
3) find the "naming" node in the property editor and uncheck "Remote EJB"
4) check the "Local EJB" checkbox which will then enable the fields for
the local and local home interfaces
5) enter the value of local interface to be: "Music"
6) enter the value of local home interface to be: "MusicHome"
2) The setup datasource step is incorrect in the tutorial.
The entity beans that are imported use a datasource called
"examples-dataSource-demoPool".
This datasource doesn't exist in the default workshop domain so in this step
the user
is to create the missing datasource. So going to the datasource viewer and
choosing "add datasource"
and pasting in the above name will create the datasource that's needed for
the entity beans.
3) In the source code listing for MusicBean there's missing imports for:
javax.naming.InitialContext
javax.naming.NamingException
4) the ejb-local-ref XML has one problem, possibly two:
1) The case is incorrect for the EJB ref name. The tutorial has it as:
ejb/MusicLink
but addBand.jsp refers to it as ejb/musicLink. So either change the
jsp file or the ejb-ref-name so
that the two match.
2) The placement of the <ejb-local-ref> XML may be in the wrong spot.
This element must
appear at the bottom of web.xml. i.e.
<webapp>
<ejb-local-ref>
<ejb-ref-name>ejb/musicLink</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>examples.ejb20.relationships.bands.MusicHome</local-home>
<local>examples.ejb20.relationships.bands.Music</local>
<ejb-link>BandsExampleEJB.jar#Music</ejb-link>
</ejb-local-ref>
</web-app>
5) and finally ensure that your application's build order is correct. Make
sure that the EJB
project builds before the web project.
This can be verified by selecting the menu "tools->application properties"
and then
clicking on the "build" node to get the build order.
All of these mistakes will be fixed for the SP02 release. Hopefully one of
these solutions fixes
the problems you're experiencing.
-Michael
"Gunnar Skogen" <[email protected]> wrote in message
news:[email protected]...
>
This thread :
Suggestions on newbie tutorials for Workshop and Weblogic 8.1
Date: 8 Aug 2003 15:06:55 -0700
From: "Morgan" <[email protected]>
Organization: BEA NEWS SITE
Newsgroup: weblogic.developer.interest.workshop
Describes the same problem, no solution - so:
1) When will the tutorial(s)/ and or workshop be fixed ?
2) Could we get a fix for this particular problem ? ( I tried more than Iwant
to admit )
"Gunnar Skogen" <[email protected]> wrote:
Hi,
(chiming in because:)
I have exactly the same problem with the same app:
This is following the tutorial for 8.1 :"Tutorial EJB project, Part one"
to the
letter and running the build.
The link names etc are correct, however, nothing is/has been deployed
according
to console..
NB: Following the tutorial the MusicBean is set up as a remote bean
(default
in
workshop?) - have tried going the local way also without any success.
It appears
the tutorial itself is faulty(?) ( it also shows the dialog for importing
a webapp
when it most probably means to create an empty one )
Michael Kovacs <[email protected]> wrote:
Hi Peter,
A couple of things...
Ensure that your EJBs are deployed to the server properly. It
seems from your error that they might very well already be
deployed successfully, but that's just a guess. To verify this you
can have a look at the WebLogic admin console and see that your
beans have been deployed to the server by looking at your
application.
Assuming your beans are deployed....
Ensure that the reference to the EJB ref is using the exact
name of the ejb-ref-name. The name is case sensitive.
So when you do your lookup of the bean in your JSP
ensure that the "ejb/MusicLink" from the <ejb-ref-name>
matches exactly. i.e.
Object obj = ctx.lookup("java:comp/env/ejb/MusicLink");
Also, make sure that the <ejb-link> is correct.
The format for the link name is:
EJBprojectname.jar#EJBName
So for your example, make sure that "BandsExampleEJB"
is the name of your EJB project or correct that value in the
link name, and that your Bean's EJB name is "Music".
Let me know if this helps.
-Michael
Peter Hegedüs wrote:
Hi!
Im a novice at this environment so I have been running the EJB
Tutorial
provided
with 8.1
Everything works as i should until I deploy the application.
I get a:
weblogic.management.DeploymentException: Could not setup environment- with nest
ed exception:
[weblogic.deployment.EnvironmentException: [J2EE:160101]Error: Theejb-link 'Ban
dsExampleEJB.jar#Music' declared in the ejb-ref or ejb-local-ref
'ejb/MusicLink'
in the application module 'webapp' could not be resolved. The targetEJB for
th
e ejb-ref could not be found. Please ensure the link is correct.]
The code for the ejb-local-ref is as folows:
<ejb-local-ref>
<ejb-ref-name>ejb/MusicLink</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>examples.ejb20.relationships.bands.MusicHome</local-home>
<local>examples.ejb20.relationships.bands.Music</local>
<ejb-link>BandsExampleEJB.jar#Music</ejb-link>
</ejb-local-ref>
What can I be doing wrong?
/Peter -
Ejb3 help needed( ejb-local-ref )
hi
I have developed one enterprise application.In client refers the session bean in turn session bean refers the entity bean.
But the problem is when i run that application i am not getting desired output.I ahve used JNDI look up to refer the bean.
i am using netbeansIDE5.5 and sun's application server
i think my web.xml ( )is not correcct.
content of web.xml (partly)
<ejb-local-ref>
<ejb-ref-name>TaskSessionLocal</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home/>
<local>TaskEjb.TaskSessionLocal</local>
<ejb-link>TaskSession</ejb-link>
</ejb-local-ref>
can anybody please tell me what all these signifies(<ejb-local-ref> and all)
regards
shruthiIf you're referring to an EJB 3.0 Local Business interface using an ejb-local-ref do not
include the <local-home> element. Here's a full description of the meaning of each
element from our EJB FAQ :
https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#EJB_ejb-ref_ejb_local_ref -
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 -
Sample weblogic-ejb-jar.xml for Resource-ref EJB 3.0
I am trying to create an MDB that can be re-used under different names.
@MessageDriven(description = "An MDB that transfers messages from one Queue to another", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") })
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class TransferMdb implements MessageListener {
private static final Logger LOG = Logger.getLogger(TransferMdb.class);
@Resource(name = "jms/connfactory")
private ConnectionFactory connectionFactory;
@Resource(name = "jms/targetDestination")
private Queue targetDestination;
<ejb-jar version="3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_3_0.xsd">
<enterprise-beans>
<message-driven>
<ejb-name>TransferMdb</ejb-name>
<ejb-class>TransferMdb</ejb-class>
</message-driven>
</enterprise-beans>
</ejb-jar>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>TransferMdb</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>200</max-beans-in-free-pool>
<initial-beans-in-free-pool>5</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>test_queue</destination-jndi-name>
<transaction-descriptor>
<trans-timeout-seconds>20</trans-timeout-seconds>
</transaction-descriptor>
</message-driven-descriptor>
<reference-descriptor>
<resource-description>
<res-ref-name>jms/connectionfactory</res-ref-name>
<jndi-name>connectionfactory</jndi-name>
</resource-description>
<resource-description>
<res-ref-name>jms/targetDestination</res-ref-name>
<jndi-name>reply_queue</jndi-name>
</resource-description>
</reference-descriptor>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
However when I deploy the above, I get exceptions such as:
problem: cvc-complex-type.2.4a: Expected elements 'initial-context-factory@http://www.bea.com/ns/weblogic/weblogic-ejb-jar provider-url@http://www.bea.com/ns/weblogic/weblogic-ejb-jar connection-factory-jndi-name@http://www.bea.com/ns/weblogic/weblogic-ejb-jar jms-polling-interval-seconds@http://www.bea.com/ns/weblogic/weblogic-ejb-jar jms-client-id@http://www.bea.com/ns/weblogic/weblogic-ejb-jar generate-unique-jms-client-id@http://www.bea.com/ns/weblogic/weblogic-ejb-jar durable-subscription-deletion@http://www.bea.com/ns/weblogic/weblogic-ejb-jar max-messages-in-transaction@http://www.bea.com/ns/weblogic/weblogic-ejb-jar distributed-destination-connection@http://www.bea.com/ns/weblogic/weblogic-ejb-jar use81-style-polling@http://www.bea.com/ns/weblogic/weblogic-ejb-jar init-suspend-seconds@http://www.bea.com/ns/weblogic/weblogic-ejb-jar max-suspend-seconds@http://www.bea.com/ns/weblogic/weblogic-ejb-jar security-plugin@http://www.bea.com/ns/weblogic/weblogic-ejb-jar' instead of 'transaction-descriptor@http://www.bea.com/ns/weblogic/weblogic-ejb-jar' here in element message-driven-descriptor@http://www.bea.com/ns/weblogic/weblogic-ejb-jar:<null>
problem: cvc-complex-type.2.4a: Expected elements 'transaction-descriptor@http://www.bea.com/ns/weblogic/weblogic-ejb-jar iiop-security-descriptor@http://www.bea.com/ns/weblogic/weblogic-ejb-jar resource-description@http://www.bea.com/ns/weblogic/weblogic-ejb-jar resource-env-description@http://www.bea.com/ns/weblogic/weblogic-ejb-jar ejb-reference-description@http://www.bea.com/ns/weblogic/weblogic-ejb-jar service-reference-description@http://www.bea.com/ns/weblogic/weblogic-ejb-jar enable-call-by-reference@http://www.bea.com/ns/weblogic/weblogic-ejb-jar network-access-point@http://www.bea.com/ns/weblogic/weblogic-ejb-jar clients-on-same-server@http://www.bea.com/ns/weblogic/weblogic-ejb-jar run-as-principal-name@http://www.bea.com/ns/weblogic/weblogic-ejb-jar create-as-principal-name@http://www.bea.com/ns/weblogic/weblogic-ejb-jar remove-as-principal-name@http://www.bea.com/ns/weblogic/weblogic-ejb-jar passivate-as-principal-name@http://www.bea.com/ns/weblogic/weblogic-ejb-jar jndi-name@http://www.bea.com/ns/weblogic/weblogic-ejb-jar local-jndi-name@http://www.bea.com/ns/weblogic/weblogic-ejb-jar dispatch-policy@http://www.bea.com/ns/weblogic/weblogic-ejb-jar remote-client-timeout@http://www.bea.com/ns/weblogic/weblogic-ejb-jar stick-to-first-server@http://www.bea.com/ns/weblogic/weblogic-ejb-jar' instead of 'reference-descriptor@http://www.bea.com/ns/weblogic/weblogic-ejb-jar' here in element weblogic-enterprise-bean@http://www.bea.com/ns/weblogic/weblogic-ejb-jar:<null>
at weblogic.descriptor.internal.MarshallerFactory$1.evaluateResults(MarshallerFactory.java:234)
at weblogic.descriptor.internal.MarshallerFactory$1.evaluateResults(MarshallerFactory.java:221)
at weblogic.descriptor.internal.MarshallerFactory$1.createDescriptor(MarshallerFactory.java:146)
at weblogic.descriptor.BasicDescriptorManager.createDescriptor(BasicDescriptorManager.java:306)
at weblogic.application.descriptor.AbstractDescriptorLoader2.getDescriptorBeanFromReader(AbstractDescriptorLoader2.java:788)
Truncated. see log file for complete stacktrace
I am clearly missing items in the weblogic-ejb-jar.xml. If anyone has a sample or tips, that would be awesome as a starting point.Those tags just declare that you are using our CMP provider and that
your descriptor is in META-INF/weblogic-cmp-rdbms-jar.xml.
FWIW, you might also want to check out EJBGen. It tends to keep more up
to date with WLS than xdoclet.
-- Rob
Gen wrote:
I am using xdoclets to generate descriptor file weblogic-ejb-jar.xml
for a BMP entity bean. Xdoclet is generating the descriptor file
alright, but is putting the following extra tags. This happens even
for samples which come with the download, so my tags in java file are
not wrong.
My question is, are the extra tags below harmless, or should I
manually go to each desciptor file and remove them?
Thanks.
----------- EXTRA TAGS GENERATED START ---------
persistence> <persistence-type>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>6.0</type-version>
<type-storage>META-INF/weblogic-cmp-rdbms-jar.xml</type-storage>
</persistence-type>
<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>6.0</type-version>
</persistence-use>
</persistence>
----------- EXTRA TAGS GENERATED END ---------
----------- TAGS I PUT IN JAVA CLASS START --------
* @ejb:bean name="com.ejb.entity.Customer"
* jndi-name="com.ejb.entity.CustomerHome"
* view-type="remote"
* type="BMP"
* primkey-field="com.ejb.entity.CustomerPK"
* reentrant="false"
* @weblogic:cache
* max-beans-in-cache="1000"
* read-timeout-seconds="900"
* concurrency-strategy="ReadOnly"
----------- TAGS I PUT IN JAVA CLASS END --------
Maybe you are looking for
-
Problems associating device to Apple ID/user account on my mac
Hiya, I'm trying to help a friend out by backing up her devices (iPad and iPhone) to my computer so I can update the OS on both. I had previously sync'd her iPad to my iTunes to back it up, but I then figured afterward it'd be better to create a new
-
Where is the editing tab in iMovie HD?
when i open iMovie HD and am working in my project... i don't see my editing tab next to clips. at the bottom of the frame all it says is clips, photos, audio, titles, trans, effects, idvd. i don't see the tab that says clips, themes, media, editing,
-
Quicktime Player Pro won't play any movies?
Ever since I restored my computer about a month ago, my Quicktime Player won't play any video formats correctly. .avi files don't play anymore, and mp4 files only play sound with the screen black. Then when I try to close the application, I get the p
-
Field is missing in Create condition table screen
We are going through one minor issue.We are trying to configure output types for billing docs.I am trying to create a condition table with sold to party field.It is displaying in field catalog,but not displaying in create condition table screen.Any i
-
I think I just lost my whole music library, help!
Hello everyone! First off, i'm in my late 60's and have worked in maual labor my entire life. I'm really trying hard to increase my knowledge of technical devices. I own a classic iPod, 80GB, model #MB029LL and version 1.1.2 PC. I'm also running wind