Call EJB from Start Up class
I'm using OC4J 10.1.3 Standalone.
I have a requirement to initialize web services and configuration parameters during app server start up.
Accordingly,I planned to call a EJB 2.0 stateless session bean from a StartUp class.
The ejb is responsible for initializing some configurations and web services.The ejb is dependent on some other classes which are present as utility jars .
However,I cannot somehow figure out how to refer the EJB from my startup class because the EAR which contains the EJB jar is in a child loader to that containing the startup class.
Please guide me!! Please suggest if some alternative approach could be taken to suffice my requirement.
TIA
Avi, I was just waiting for the "servlet hack".
I really prefer the application client way, much cleaner, no servlet container needed, and could be tested outside the container.
--olaf
Similar Messages
-
Calling EJB from Java Stored Procedures
Hi,
I am trying to call an Enterprise Java Bean from stored procedure. This stored procedure calls a java program. As long as it is a simple java program it works fine and loadjava.exe does not give any problem (neither compile-time nor run-time).
It is not working when I am trying to call EJB from it. It is giving compile-time error.
If anybody has implemented the same please suggest how to go forward.
thanks in advance,
Shashank AgarwalI tried the same thing without any luck. I assume you are using OC4J for your EJB ...
The compiling issue may be because you don't have the classes in your EJB client jar loaded into the database. Once those classes are loaded, you should loadjava without any problem.
However, you won't be able to call the EJB server because the EJB client (your Java code in the DB) will need the OC4J environment (oc4j.jar). I have tried to load oc4j.jar into the DB as well, and that was a big mess and nothing worked. My DB is 8.1.7, maybe the new 9i have OC4J libs bundled?!?
I looked around and only found 2 alternatives:
1. Write a JSP page that acts like an EJB client, then use URLConnection in your DB java code to send params to the JSP for it to invlode the EJB
2. Replace the JSP with RMI code, and use RMI instead of URLConnection in your DB code to invloke the EJB client.
If you find any other solution, please share it here.
Good luck!
Hi,
I am trying to call an Enterprise Java Bean from stored procedure. This stored procedure calls a java program. As long as it is a simple java program it works fine and loadjava.exe does not give any problem (neither compile-time nor run-time).
It is not working when I am trying to call EJB from it. It is giving compile-time error.
If anybody has implemented the same please suggest how to go forward.
thanks in advance,
Shashank Agarwal -
Calling EJB from other EJB on other J2EE Server
Can I call EJB from other EJB on other J2EE Server
Servers - Websphere 5.0
Do i require home & remote interface of that ejb on client side also
Help me, pleasethe problem is actually i require that is specific to websphere
for example i want to call a method ion that ejb
say my ejb name is myejb
so the normal way i should call is
InitialContext initialContext = new InitialContext();
Object homeObject = initialContext.lookup("ejb/MyEjbHome");
MyEJBHome myEJBHome =(MYEjbHome )javax.rmi.PortableRemoteObject.narrow(homeObjectMYEjbHome.class);
myEJB = lSHome.create();
myEJB.someMethod();
but here i am having class for home and remote available
now if other app server i am not having this classes then what to do -
Calling EJB from from a client app
Hi all,
I am trying to call an EJB component from portal. The example EJB I have taken is from SDN Bonus Calculator example - Application Server/Web Dynpro/Samples and Tutorials/Using EJBs (20)
I deployed the EAR file - no issue
I wrote the following code in a client app and trying to connect to the EJB remotely.
try {
java.util.Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sap.engine.services.jndi.InitialContextFactoryImpl");
properties.put(Context.PROVIDER_URL, "ux0800:55304");
InitialContext ctx = new InitialContext(properties);
//InitialContext ctx = new InitialContext();
// get ejb home
home =
(BonusCalculatorLocalHome) ctx.lookup(
"localejbs/MySessionBean");
theCalculator = home.create();
} catch (Exception namingException) {
namingException.printStackTrace();
I get the following error
javax.naming.NoInitialContextException: Cannot instantiate class: com.sap.engine.services.jndi.InitialContextFactoryImpl [Root exception is java.lang.ClassNotFoundException: com.sap.engine.services.jndi.InitialContextFactoryImpl]
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at com.sap.bonus.calculation.sessionBean.MyCommandBean.<init>(MyCommandBean.java:27)
at com.sap.bonus.calculation.sessionBean.MyCommandBean.main(MyCommandBean.java:68)
Caused by: java.lang.ClassNotFoundException: com.sap.engine.services.jndi.InitialContextFactoryImpl
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
Any clue will be appreciated.
thnxHi Sabbir,
Following code works for me in calling EJB from normal java application. Did you added the jar files to your application?. see the required jar files in end of code.
Create simple java applcation do the following steps:
Give JNDI name to the EJB(HelloJNDI)->Add the HelloEJB to HelloEAR ->deploy
Proxy Program to call ejb:
import javax.naming.Context;
import javax.naming.InitialContext;
import com.sample.Hello;
import com.sample.HelloHome;
public class HelloTest {
public static void main(String[] args) {
Hello remote = null;
try {
Context ctx = new InitialContext();
HelloHome home = (HelloHome) ctx.lookup("HelloJNDI");
remote = home.create();
String result = remote.hello();
System.out.print("Result:" + result);
} catch (Exception e) {
System.out.println("Exception:" + e.getLocalizedMessage());
1. Go To Run > Java Application ->New->select your project and select your main class(java program from which your going to call EJB)
2. Click next tab ->(x)=Arguments
paste the following code in VM Arguments
-Djava.naming.factory.initial=com.sap.engine.services.jndi.InitialContextFactoryImpl -Djava.naming.provider.url=localhost:50104
replace the server IP address with your server IP address where your ejbs are running.
Under Class path settings for the program put the following jar files.
You can search for them from net weaver soruce folders
or copy from D:\usr\sap\J2E\JC01\j2ee\j2eeclient
ejb20.jar
logging.jar
exception.jar
sapj2eeclient.jar
Add Corresponding ejb.jar
and RUN >>>
this makes testing of your client programs easier, you can find the error trace on which line and saves lot of time.
Regards, Suresh -
Hello, everybody,
I'm very new at EJB and I'm trying to learn it.
I have created Enterprise Application using Netbeans IDE, I have EJB and APP client. What I want is to connect to my MySql database and get some info from table.
For e.g. Login and Password.
How can I call EJB from my client app which connects to my database and gets information I need?What server you are using?
if you use jboss AS ,here is a simple Main class how to connect EJB and access ejb methods:
package com.david.ejb.client;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import com.david.ejb.domain.Person;
import com.david.ejb.domain.PersonRemote;
public class Main {
public static void main(String[] args) {
try {
Context ctx = getInitialContext();
Object obj = ctx.lookup("PersonSessionRemote/remote");
PersonRemote pr=(PersonRemote)PortableRemoteObject.narrow(obj, PersonRemote.class);
Person p=new Person();
p.setName("david");
pr.addPerson(p);
pr.findPerson(1);
// System.out.print(br.find(pk).getAuthor_name());
} catch (Exception ex) {
ex.printStackTrace();
private static Context getInitialContext() throws NamingException {
Properties p = new Properties();
p.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.NamingContextFactory");
p.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.setProperty(Context.PROVIDER_URL, "jnp://localhost:1099");
return new InitialContext(p);
}Person is ant @Entity and PersonRemote is remote interfaces, to connect database you have to make datasource file at jboss-4.2.3.GA\server\default\deploy
simle mysql-ds.xml looks like this:
datasources>
<local-tx-datasource>
<jndi-name>some name</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/dbname</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root password</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
<idle-timeout-minutes>15</idle-timeout-minutes>
<exception-sorter-class-name>com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter</exception-sorter-class-name>
<valid-connection-checker-class-name>com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker</valid-connection-checker-class-name>
</local-tx-datasource>
</datasources>also at resources/META-INF directory you must have persistence.xml like this
<persistence>
<persistence-unit name="SimpleEjb">
<jta-data-source>java:/some name</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence> -
Help me which JNDIFactory to use to access EJB from a java class of JAR
I am confused in understanding the different JNDI factories
RMIInitialContextFactory, ApplicationInitialContextFactory and ApplicationClientInitialContextFactory
And the different namespaces like global, container local and component local.
Especially is there any relationship between the JNDI factories and the namespaces?
Or are they related to the deployment descriptors.
Because in application specific deployment descriptors (orion-ejb-jar.xml), we just map the JNDI location with the object (or its reference from ejb-jar.xml). We dont specify it can be accessed from this factory or that.
Shall we access an EJB from using any JNDI factory?
Specifically, I am stuck with what Factory to use to access an EJB from a Java class in a library (jar). The JAR is packaged with the EAR which contains the EJB Jar that I am trying to access.
THANK YOUEd,
As Robin said, I think you need code similar to this:
Context c = new InitialContext();
Object o = c.lookup("java:comp/env/Name");where Name is the name of your EJB as it appears in the "ejb-jar.xml"
deployment descriptor XML file.
Good Luck,
Avi. -
Hello Developers!
I deployed my ejb to OAS4081. I call that
from JDeveloper so it good. But when I try
to call from applet in IExpl5 I can't
instantiate the ORB. I've got a com.ms.security.SecurityException : oracle.oas.orb.CORBA.ORB.init
I coded the CLASSPATH(oasoorb(yoj),client,
ejbapi...) perfectly, I think.
If anybody could help, please...
Thanx!Hi there,
I saw someone on this group had a problem to locate proper classpath
to call EJB from JSP. I thought if you call EJB from classpath, you are
calling the bean. But you loss all the EJB functions. To be able to utilize
EJB features like object pooling. You need to call it from Weblogic server
using url/jndi, not from the jar directly.
Any comment? Am I right?
BTW, my question about calling EJB from JSP means calling through URL,
not a local path.
Thank you
>-------------------------------------------------------------------->
Jim wrote in message <[email protected]>...
>Hi there,
> Can I call EJB from JSP? Is there a particular security setting or
>concern for Weblogic? Is there an coding example?
>
>Thank you
>
>
-
Invalid guid error looking up EJB from a startup class
Gentlemen,
I am receiving an "invalid guid at GDS" error that is similar to others reported at:
http://softwareforum.sun.com/servlet/ProcessRequest?RHIVEID=181&RPAGEID=135&HOID=50B500000008000000FE090000&UCATEGORY_0=_29_%24_24_6_&UCATEGORY_S=0
and
http://softwareforum.sun.com/servlet/ProcessRequest?RHIVEID=181&RPAGEID=135&HOID=50B500000008000000FE090000&UCATEGORY_0=_29_%24_24_6_&UCATEGORY_S=0
In my case, I can retrieve the EJB from my rich client with no problems. However, if I execute the exact
same code from within a startup class (i.e. com.iplanet.ias.startup.StartupClass) then I get the following error repeated until memory runs out:
javax.naming.NameNotFoundException: MessageRepositoryBean : Invalid guid null in
GDS
at com.netscape.server.ejb.EjbContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at javax.naming.InitialContext.lookup(InitialContext.java:357)
at com.netscape.ejb.CorbaHomeFactoryImpl.ConstructEJBHome(Unknown Source
at com.netscape.CosNaming.NamingContextImpl.resolve(Unknown Source)
at org.omg.CosNaming._NamingContextImplBase.invoke(_NamingContextImplBas
e.java:233)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegat
e.java:236)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:227)
at com.sun.corba.ee.internal.iiop.CachedWorkerThread.doWork(IIOPConnecti
on.java:262)
at com.sun.corba.ee.internal.iiop.CachedWorkerThread.run(IIOPConnection.
java:230)
javax.naming.NameNotFoundException: MessageRepositoryBean : Invalid guid null in
In previous answers people have suggested adding various things to the app server classpath. This does not make any difference for me. I am puzzled why code runs fine in a normal rich client, but not in a startup class. Here is the code that I am running:
try
String contextFactory = "com.sun.jndi.cosnaming.CNCtxFactory";
String providerURL = "iiop://localhost:9010";
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
p.put(Context.PROVIDER_URL, providerURL);
Context context = new InitialContext(p);
MessageRepositoryHome home = (MessageRepositoryHome)
PortableRemoteObject.narrow(context.lookup("ejb/MessageRepository"), MessageRepositoryHome.class);
MessageRepository repository = home.create();
catch(Exception e)
e.printStackTrace(Log.err);
System.exit(1);
Thanks for your help,
MarkI was mistaken in this posting. I was able to access the EJB from the startup class so there must be something else that I am doing to cause this problem. I'd still like to know why I get those invalid guid errors though.
By the way, please forgive me for using the gender-specific gentlemen in my posting. That was accidental. -
Calling EJB from class in same ear
Has anyone ever attempted to call an EJB from a class that is in the same ear?
I have a singleton class, not
another EJB, that is trying to get ahold of an EJB to call a method. This method
has been defined to have both
a local and remote interface.
I thought I should be able to get a hold of the local interface. When I try to
get the interface out of JNDI
as follows:
PickupCpaLocalHome cpaHome = (PickupCpaLocalHome) ctx.lookup("pickup.PickupCpaEJBLocal");
I get an exception:
javax.naming.LinkException: [Root exception is
javax.naming.NameNotFoundException: Unable to resolve
'app/ejb/PickupCpaEJB.jar#PickupCpaEJB/local-home' Resolved: 'app/ejb'
Unresolved:'PickupCpaEJB.jar#PickupCpaEJB' ; remaining name
'PickupCpaEJB.jar#PickupCpaEJB/local-home']; Link Remaining Name:
'java:app/ejb/PickupCpaEJB.jar#PickupCpaEJB/local-home'
When I look at the JNDI tree using the WebLogic console, it shows that "pickup.PickupCpaEJBLocal"
is
in JNDI.
Since the local interface doesn't work, I thought I'd try the remote interface.
The remote interface
works fine from my client and from another EJB in a different ear. Using the
remote interface I get an
exception when trying to cast the result to my home.
java.lang.ClassCastException:
com.fedex.pickup.j2ee.ejb.cpa.PickupCpaEJB_gapk5_HomeImpl_WLStub
// Code
PickupCpaHome cpaHome = (PickupCpaHome) ctx.lookup("pickup.PickupCpaEJBRemote");
As I mentioned earlier, the same code works in a client and in an EJB in another
ear.
Any ideasHas anyone ever attempted to call an EJB from a class that is in the same ear?
I have a singleton class, not
another EJB, that is trying to get ahold of an EJB to call a method. This method
has been defined to have both
a local and remote interface.
I thought I should be able to get a hold of the local interface. When I try to
get the interface out of JNDI
as follows:
PickupCpaLocalHome cpaHome = (PickupCpaLocalHome) ctx.lookup("pickup.PickupCpaEJBLocal");
I get an exception:
javax.naming.LinkException: [Root exception is
javax.naming.NameNotFoundException: Unable to resolve
'app/ejb/PickupCpaEJB.jar#PickupCpaEJB/local-home' Resolved: 'app/ejb'
Unresolved:'PickupCpaEJB.jar#PickupCpaEJB' ; remaining name
'PickupCpaEJB.jar#PickupCpaEJB/local-home']; Link Remaining Name:
'java:app/ejb/PickupCpaEJB.jar#PickupCpaEJB/local-home'
When I look at the JNDI tree using the WebLogic console, it shows that "pickup.PickupCpaEJBLocal"
is
in JNDI.
Since the local interface doesn't work, I thought I'd try the remote interface.
The remote interface
works fine from my client and from another EJB in a different ear. Using the
remote interface I get an
exception when trying to cast the result to my home.
java.lang.ClassCastException:
com.fedex.pickup.j2ee.ejb.cpa.PickupCpaEJB_gapk5_HomeImpl_WLStub
// Code
PickupCpaHome cpaHome = (PickupCpaHome) ctx.lookup("pickup.PickupCpaEJBRemote");
As I mentioned earlier, the same code works in a client and in an EJB in another
ear.
Any ideas -
"HowTo" Call EJB from different EAR in WLS7
Hi,
Im trying to deploy two EAR application modules, both on same WLS7.0 SP2 server
. I have several problems to give visibility between EAR applications. There is
dependences between both applications ( I will call them FirstEAR and SecondEAR)
. A FirstEAR EJB ( FirstEAREJB) uses an EJB from the SecondEAR ( SecondEAREJB
The deployment result is a "Unable to initialize method info for remote or home
interface The error is java.lang.NoClassDefFoundError: myPackage.myPackage.SECONDEAREJB"
when deploy the FirstEAREJB. I try the deployment of both using -iiop ejbc option.
Which is the way to allow my FirstEAREJB to use SECONDEAREJB?
I have try
- to set the manifest Class-Path property for FirstEAREJB with no results.
- to set the descriptor ejb-jar properties for EJBRefs with no results.
- to set the SecondEAREJB path in the weblogic start script classpath, with no
results.
- to set the SecondEAR classpath at the ejbc -cp option for FirstEAREJB ejbc
compile, with no results again.
Is there another way to allow my FirstEAREJB to use SecondEAREJB ?Take a look at this documentation on WebLogic Server Application
Classloading.
It might be helpful.
http://edocs.bea.com/wls/docs70/programming/classloading.html
/k
"Adolfo Cortés" <[email protected]> wrote in message
news:[email protected]..
>
Hi,
Im trying to deploy two EAR application modules, both on same WLS7.0 SP2server
I have several problems to give visibility between EAR applications.There is
dependences between both applications ( I will call them FirstEAR andSecondEAR)
A FirstEAR EJB ( FirstEAREJB) uses an EJB from the SecondEAR (SecondEAREJB
The deployment result is a "Unable to initialize method info for remote orhome
interface The error is java.lang.NoClassDefFoundError:myPackage.myPackage.SECONDEAREJB"
when deploy the FirstEAREJB. I try the deployment of both using -iiop ejbcoption.
>
Which is the way to allow my FirstEAREJB to use SECONDEAREJB?
I have try
- to set the manifest Class-Path property for FirstEAREJB with noresults.
- to set the descriptor ejb-jar properties for EJBRefs with no results.
- to set the SecondEAREJB path in the weblogic start script classpath,with no
results.
- to set the SecondEAR classpath at the ejbc -cp option for FirstEAREJBejbc
compile, with no results again.
Is there another way to allow my FirstEAREJB to use SecondEAREJB ? -
Call EJB from a XI Javamapping
I have developed a simple EAR which contains a CMP with local and remote interfaces. This cmp may be successfully called using the remote-interface from a client (j2se) project. Now i like to call the same CMP from within a XI JavaMapping. In the execute method i am using the following code:
InitialContext ctx;
MeraConfigurationLocal configLocal = null;
try {
ctx = new InitialContext();
Object obj = ctx.lookup("localejbs/mgb.ch/XIMera_EAR/MeraConfigurationBean");
if (trace != null)
trace.addInfo("Got object from jndi: "+obj);
MeraConfigurationLocalHome configHome = (MeraConfigurationLocalHome)obj;
if (configHome !=null) {
if (trace != null)
trace.addInfo("ConfigurationLocalHome: "+configHome);
configLocal = configHome.create();
} catch (Exception e) {
throw new StreamTransformationException(e.getMessage(), e);
int port = Integer.parseInt(
configLocal.ReadParam(MeraResourcePoolDispatcherService.CFG_GENERAL_LISTENER_PORT));
if (trace != null)
trace.addInfo("Got listenerport from localejbs/mgb.ch/XIMera_EAR/MeraConfigBean: "+port);
after calling ctx.lookup ... i got the following traceentry in xi:
<Trace level="1" type="T">*** START APPLICATION TRACE ***</Trace>
<Trace level="2" type="T">Got object from jndi: [email protected]30</Trace>
<Trace level="1" type="T">*** END APPLICATION TRACE ***</Trace>
when i try to cast this obj into a MeraConfigurationLocal the system is throwing a ClassCastExceptionHello.
Check my wiki article:
http://wiki.sdn.sap.com/wiki/display/stage/SapNetweaverProcessIntegration.CallEjb3.0methodfromJavaclassmappingPI7.1
(SapNetweaver Process Integration. Call Ejb 3.0 method from Java class mapping PI 7.1) -
Calling EJB from an applet in 9iAS Release 2?
Hello!
In 9iAS Release 1 it is not so easy to call an EJB from an applet. First the applet needs special privileges and then the applet starts only once. The cause of problem is the implementation of ormi.
Will 9iAS Rel. 2 support Applets calling EJBs?Jeff,
I am also trying to make an applet client for an EJB deployed to OC4J.
I modified the java2.policy file as you suggested, but when I tried to run my applet, I
got the following error:
java.lang.ExceptionInInitializerError: java.security.AccessControlException: access denied (java.util.PropertyPermission tunneling.shortcut read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at java.lang.Boolean.getBoolean(Unknown Source)
at com.evermind.server.rmi.RMIInitialContextFactory.<clinit>(RMIInitialContextFactory.java:34)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.naming.internal.VersionHelper12.loadClass(Unknown Source)
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.<init>(Unknown Source)
at its.fnd.ejb.EJBHomeFinder.getHomeObject(Unknown Source)
at its.fnd.flight.ejb.EJBFlightFactory.<init>(Unknown Source)
at its.fnd.flight.FlightFactory.<init>(FlightFactory.java:97)
at EJBApplet.jbInit(EJBApplet.java:47)
at EJBApplet.init(EJBApplet.java:36)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
I am using OC4J (stand-alone) version 9.0.2.0.0 on Solaris 7 and Microsoft Internet Explorer
5.0 with the java 1.3.1 plug-in.
Here is the applet code that I use to lookup the EJB home interface:
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,"com.evermind.server.rmi.RMIInitialContextFactory");
props.put(Context.PROVIDER_URL,"ormi://host:6666/app");
props.put(Context.SECURITY_PRINCIPAL,"admin");
props.put(Context.SECURITY_CREDENTIALS,"password");
Context ctxt = new InitialContext(props);
Object homeObj = ctxt.lookup("my_bean");
MyBeanHome home = PortableRemoteObject.narrow(homeObj, MyBeanHome.class);
The HTML page with the <applet> tag is a static HTML page that is part of OC4J's default
web application. The applet class file is located in a subdirectory of the default-web-app
directory. Here is the HTML page...
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<TITLE>
HTML Test Page
</TITLE>
</HEAD>
<BODY>
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="580" height="450" name="EJBApplet" align="middle" alt="Loading EJBApplet ...">
<param name="java_code" value="EJBApplet">
<param name="java_codebase" value="/tests">
<param name="java_archive" value="xerces.jar,ejb.jar,oc4j.jar,jaas.jar"/>
<param name="java_type" value="application/x-java-applet;version=1.3">
<param name="java_scriptable" value="true">
<table cellpadding="1" bgcolor="#FFFFFF" width="580" height="450">
<tr><td>
This is a place for an APPLET.<br>Your browser doesn't support the correct applet java plug-in.<br><br>You can install the correct plug-in from here.<br><a target='_blank' onClick='javascript:self.window.close()' href="/classes/3rdparty/j2re-win-plug-in.exe">Click here to install plug-in.</a><br><br>Or if you have an Internet connection you can install the correct plug-in from here.<br><a target='_blank' onClick='javascript:self.window.close()' href="http://java.sun.com/products/plugin/1.3/plugin-install.html">Click here to install plug-in from Internet.</a><br><br>You can call your System Administrator for assistance.</td></tr>
</table>
</object>
</BODY>
</HTML>
I have searched the Internet, and the documentation, and tried several, different things,
but I can't get it to work.
Any and all help will be greatly appreciated.
Thanks,
Sofia. -
Hi - I'm running OC4J 9.0.2 on windows 2000
I have a JSP that accepts user inputs and the call respective Servlets. Before the servlet gets called, I want to log a tracing event with an EJB(Stateless Session Bean).
I have manipulated the "form" values with JavaScript but cannot find any docs on how to call an EJB from JavaScript in a JSP.
The JSP and EJB works fine on there own. How do I get the "form" values into the EJB variables without JavaScript?
The EJB logs fine while still in the "JAVA" part of the JSP but I don't know how to extract these 2 index values.
Tks
Andre
Here is extract of code:
<%@ page language="java" contentType="text/html;charset=windows-1252"%>
<%@ page language="java" import="java.io.*"%>
<%@ page language="java" import="java.util.*"%>
<%@ page language="java" import="javax.naming.*"%>
<%@ page language="java" import="javax.rmi.*"%>
<%@ page language="java" import="WizardEvents.WizEventLog.*"%>
<HTML>
<HEAD>
<BODY background="/wp/Background.gif">
<script language="JavaScript">
// build timer to display at bottom of screen for debugging of screen dumps
function display_time()
var da = new Date();
var dd = da.getDate('DD');
var dm = da.getMonth('MON')+1;
var dy = da.getYear('YYYY');
var h = da.getHours();
var m = da.getMinutes();
if (m < 10)
m = "0" + m;
var t = dy+"\-"+dm+"\-"+dd+" "+h+":"+m;
defaultStatus = t;
setTimeout("display_time()",60000); // one minute
return true;
function registerEvent()
var menuItem = document.selRequest.selCategory.selectedIndex;
var serviceOption = document.selRequest.serviceOption.selectedIndex;
// now invoke EJB to log event
alert("selected menu option is "+menuItem+" and service option "+serviceOption);
return true;
// get the value from the categories and build up list of the options...
function buildItems()
// alert("Building items");
// get the index (starting with 0) of the categories selection
var menuItem = document.selRequest.selCategory.selectedIndex;
// reset the values for the options selection to 0
document.selRequest.serviceOption.length=0;
// define new array to hold options for transfer to selection item
newOptions = new Array;
// Now check which menu option, build list
var newLength = 0;
switch(menuItem)
case 0:
newLength = 1;
newOptions[0] = new Option("No Service Option",0,false,false);
break;
case 1:
newLength = 1;
newOptions[0] = new Option("No Service Option",0,false,false);
break;
case 2:
newLength = 1;
newOptions[0] = new Option("No Service Option",0,false,false);
break;
case 3:
newLength = 1;
newOptions[0] = new Option("No Service Option",0,false,false);
break;
case 4:
newLength = 1;
newOptions[0] = new Option("No Service Option",0,false,false);
break;
case 5:
newLength = 5;
newOptions[0] = new Option("All wallet and airtime balance",0,true,true);
newOptions[1] = new Option("Airtime balance",1,false,false);
newOptions[2] = new Option("SMS-a-lot balance",2,false,false);
newOptions[3] = new Option("Call Extender balance",3,false,false);
newOptions[4] = new Option("Per Second Billing balance",4,false,false);
break;
case 6:
newLength = 2;
newOptions[0] = new Option("Subscriber data - Channel Provisioning Options",8,true,true);
newOptions[1] = new Option("IBS Pending Transaction Inquiry",9,false,false);
break;
default:
newLength = 1;
newOptions[0] = new Option("No Service Option - Default",0,false,false);
break;
var serviceOption = document.selRequest.serviceOption;
// transfer array to select statement
for (var i=0; i < newLength; i++)
serviceOption.options[i] = newOptions;
</script>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<TITLE>Wizard Prepaid Interface</TITLE>
<%----%>
<BODY text="#FFFFFF" bgcolour="#ffffff" bgcolor="#3c698a" onload="display_time();" >
<H2 ALIGN=Center>Wizard Prepaid Interface</H2>
<PRE>
<%
java.util.Enumeration params=request.getParameterNames();
StringBuffer urlBuf = request.getRequestURL();
String urlValue = urlBuf.toString();
int colPos = urlValue.indexOf(":8888");
String serverName = urlValue.substring(0,colPos+5);
String paramValues1[] = request.getParameterValues("event_ref_no");
String eventRefNo = paramValues1[0];
String paramValues2[] = request.getParameterValues("msisdn_no");
String msisdnNo = paramValues2[0];
String paramValues3[] = request.getParameterValues("operator_id");
String operatorId = paramValues3[0];
String paramValues4[] = request.getParameterValues("wizDB");
String wizDB = paramValues4[0].toLowerCase();
// set session values into session object
session.removeAttribute("eventRefNo");
session.removeAttribute("msisdnNo");
session.removeAttribute("operatorId");
session.removeAttribute("wizDB");
session.removeAttribute("serverName");
session.setAttribute("eventRefNo",eventRefNo);
session.setAttribute("msisdnNo",msisdnNo);
session.setAttribute("operatorId",operatorId);
session.setAttribute("wizDB",wizDB);
session.setAttribute("serverName",serverName);
session.setAttribute("eventOpenCount","0");
session.setAttribute("errorString","No errors encountered yet");
// now build ref to lookup event log EJB
WizardEvents.WizEventLog eventBean;
Context ctx = new InitialContext();
Object homeObject=ctx.lookup("WizEventLog");
WizardEvents.WizEventLogHome home =
(WizardEvents.WizEventLogHome)PortableRemoteObject.narrow(homeObject, WizardEvents.WizEventLogHome.class);
eventBean=(WizardEvents.WizEventLog)PortableRemoteObject.narrow(home.create(),
WizardEvents.WizEventLog.class);
int eventRefNoInput = Integer.parseInt(eventRefNo);
int operatorIdInput = Integer.parseInt(operatorId);
long msisdnNoInput = Long.parseLong(msisdnNo);
int callCatCodeInput = 177;
int callCatItemCodeInput = 2;
String machineName = "WEB";
String moduleName = "WIZARDPREPAID.JSP";
String[] resArray = null;
// event logging EJB
resArray = eventBean.setEventDetail(eventRefNoInput,
operatorIdInput,
callCatCodeInput,
callCatItemCodeInput,
machineName,
moduleName,
wizDB);
%>
</PRE>
<%--
// check if data passed is valid
--%>
<jsp:include page="/servlet/CheckValidURL" flush="true"></jsp:include>
<%
if (session.getAttribute("eventOpenCount").equals("1"))
%>
<H3 ALIGN=CENTER>MSISDN = <%=msisdnNo%></H3>
<HR>
<H4 ALIGN=CENTER>Prepaid Query History</H4>
<%--
onclick can empty the service options field
--%>
<TABLE>
<TD>Enter request target :</TD>
<%--action="/wp/servlet/ValidateParamsClass"--%>
<FORM name="selRequest" method="POST" >
<TD><SELECT name="selCategory" onchange="buildItems()" >
<OPTION value="Prepaid Cards Loaded">Prepaid Cards Loaded</OPTION>
<OPTION value="Prepaid Recycle History">Prepaid Recycle History</OPTION>
<OPTION value="Prepaid Failed Recharges">Prepaid Failed Recharges</OPTION>
<OPTION value="Prepaid Access4Life Status">Prepaid Access4Life Status</OPTION>
<OPTION value="Prepaid Number4Life Status">Prepaid Number4Life Status</OPTION>
<OPTION value="IBS Balance Inquiry">IBS Balance Inquiry</OPTION>
<OPTION value="IBS Subscriber Data Inquiry">IBS Subscriber Data Inquiry</OPTION>
</SELECT>
</TD>
</TABLE>
<%--
Build the possible service options for IBS depending on selection
Create selection list and then assign default value of none
--%>
<TABLE>
<TD>Possible Service Options:</TD>
<TD><select name="serviceOption">
<option value="">No option available</option>
<SCRIPT>
// re-build items to cater for FORWARD/BACK buttons, etc
buildItems();
</SCRIPT>
</TD>
</TABLE>
<%--
--%>
<%--
--%>
<INPUT type="submit" value="Query Prepaid Systems" onclick="registerEvent()" >
</FORM>Hi Christian,
A few questions to clarify where the cause of the problem might be:
1. When you run the JSP app in JDeveloper, are you connecting to the remotely deployed app module, or the local one in your workspace?
2. In your JSP project, there is an appmodule.properties file. This file should specify the connection mode to use to connect to your EJB (ConnectMode=EJB), and should be deployed to a directory on your webserver's classpath, along with the connections.properties file. If the appmodule.properties file contains the wrong connectmode setting, or is not on the classpath for the webserver, this might be the cause.
Let us know. -
How to Call EJB from coldfusion
I need to call EJB that's created in JBoss from coldfusion.
I'm getting different errors depending on how I set the home object
and provider url.
If I prefix provider url with jnp://, then I get the
following error
The connection to the remote JNDI server on host jnp at port
1099 has failed (as have all backup hosts listed, if any) - please
verify that the server is running and the NamingService is
available
If I take the jnp out and keep just the ip address and port,
then i get the following error
null (no security manager: RMI class loader disabled).
So I'm not sure what the issue is and I haven't used this
feature before.
Here's my codeI tries to call custom EJBfrom custom component received
follwong error
ERROR [STDERR] javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException:
No ClassLoaders found for: com.mycom.myapp.action.interfaces.pm.ejb.PmFacadeRemote
(no security manager: RMI class loader disabled)]
any idea?
Thanks
YogLC -
Hai Experts,
I want to call an EJB from a web dynpro not by using wrapper class or by using a Ejb.jar in WD's classpath.
The idea is to use reflection and Properties class to call an EJB . Is it possible to call an EJB as mentioned above.
Please help me to solve it.
Thanks in advance.
Regards,
R.Jude Silvester.Hi
Check this link
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/00bddb57-456c-2b10-cc8d-b6980d75299b
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/1f5f3366-0401-0010-d6b0-e85a49e93a5c
Thanks
Tulasi
Edited by: Tulasi Palnati on Feb 3, 2009 6:53 AM
Maybe you are looking for
-
Why is searching so much slower in both Lion and Mountain Lion than Snow Leopard?
Hi, I use Snow Leopard run on several Mac Pros to perform multidimensional time-lapse-imaging in our lab. Snow Leopard provides instantaneous (seconds) searching for folders containing the image sequences I require for analysis (distributed across 4
-
I made a purchase on iTunes and it is not showing on any of my devices. When I tried to watch the show in my purchased file I could not. When I go back to iTunes it tells me I made the purchase already. Why can't I access my purchases. Case # 5062947
-
Sharing music from one library to two different iPods
I have an itunes account with a large music library that I use with my own ipod. My daughter is getting her own iPod soon. Can I share my library on her device?
-
Trim Mark Problem. AI & ID CS5. Any Suggestions?
I am setting out A4 front and back covers as one piece of (A3+bleed) artwork to be reproduced by digital printing. After printing, the covers will be trimmed on four sides then wire bound. I set up artwork with covers side by side with 10mm in centre
-
Where can I buy a new charger?!?!
Ok so my powerbook charger popped, fizzed, sparked and died. Now I am left laptop-less and in the middle of midterms week. Almost everyone I know owns an apple laptop but they all have the NEW chargers...ugh! What can I do? I tried ordering offline a