EJB publisher -- Normal Java Client
I'm having a problem with publishing from an EJB.
I am trying to publish a topic from Session Bean in Weblogic server. And a normal client is subscriber for the topic. When I publish a message from the EJB, client is not getting the messages. While I am monitoring the Topic, it is receving the messages from bean, that is, Messages Received is increasing each time the EJB publishes. But the client is not receiving any message. Consumers Total is displayed as 1.
Could anybody tell me what might be the problem.
Thanks in advance.
Supriya
I got the solution. Thank you if anybody tried to find the solution.
Similar Messages
-
Looking up EJBs from a java client
While trying to migrate my application from standalone-oc4j
to Oracle Application Server 10g, I ran into the following problem.
My application has a stateless session bean. When trying to lookup the bean (from a java client), I get the following exception:
javax.naming.NamingException: Lookup error: javax.naming.AuthenticationException
Invalid username/password for UnifyoccEAR (ias_admin)
My code used the username/password I used to log into web-based console (which I used to deploy the application). The lookup code follows:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
OracleJASLayer.INITIAL_CONTEXT_FACTORY);
env.put(Context.PROVIDER_URL, "ormi://localhost:3201/UnifyoccEAR");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, username);
env.put(Context.SECURITY_CREDENTIALS, password);
Context ctx = new InitialContext(env);
Object obj = ctx.lookup("unify/nxj/controlCenters/occ/ControlCenterEJB");
On a whim, I tried the old SCOTT/TIGER username/password and got the following
exception:
javax.naming.NoPermissionException: Not allowed to look up unify/nxj/controlCenters/occ/ControlCenterEJB,
check the namespace-access tag setting in orion-application.xml for details
So evidently, SCOTT/TIGER is in the security database used by the app (but isn't
authorized) while the ias_admin user is not in the security database.
I have the following questions:
1. In the default configuration, is there a username/password I can use to
lookup EJB homes in the jndi namespace of an OC4J instance? If so, what
is it?
2. Where is the security database? I tried looking in the web-based console
to find how to configure security and could not figure it out. I did find
the Security page for the application, but when I tried to add a user,
it had no effect. Furthermore, this page did not show a user entry for
SCOTT; hence, it doesn't seem that OC4J is actually using the information
on this page. This is strange because the path to this page is:
Farm > Application Server: ias_admin.lab10.sac.unify.com > OC4J: home > Application: UnifyoccEAR > Security
I then went to the Security page for the default application and found
that it did have a SCOTT user. So I added a new user and tried to run
my java client. This resulted in the javax.naming.AuthenticationException
described above (I was expected the NoPermissionException encounted when
using SCOTT/TIGER). Next, I used the Security page for the default application
to change the password for SCOTT and reran my java client using SCOTT/TIGER.
This time I was expecting an AuthenticationException exception, but got the
NoPermission exception. Therefore, it seems that OC4J isn't using this
security data either.
Hunting in the console (again) for the security database, I stumble accross
the Infrasturcture page and see an Identity Management section and see that
it is configure to use an Oracle Internet Directory server. Using
<ORACLE_HOME>/bin/oidadmin, I connect to the directory server and look
for the SCOTT user. I don't find it, so I believe that this can't be the
security database either.
3. Finally, how do I configure the OC4J instance such that it will allow
anonymous users to lookup my EJB from a java client?
Please help a confused and frustrated user.Looking at your example, it looks like you are using a J2EE client container or some properties file to specify the JNDI environment used to create the initial context (for you use the no-arg constructor to InitialContext). Since our application needs to the ability to dynamically connect to ejb's running on different Java application servers (e.g., WebLogic, WebSphere, JBoss), such an approach will not work. Instead we must do it the old-fashioned way and pass the jdni connection info to the InitialContext constructor.
In any event, our problem isn't how to write the connection code, it is how to test it. Specifically, we can't figure out a valid username/password that will allow us to look up the home. Nor can we figure out how to configure security for the oc4j instance. -
How do I call an ejb from a java client?
I put ejb classes in a jar file along with java client code and deployed it on my OC4J server. Now I am trying to run the ejb by calling the client code on my OC4J server from the command line but I am not having success. Am I doing this the right way? Should I also deploy my client code? Should the client code also be in a directory on my OC4J server?
MikeHi. Here is a part of the code for a java client. In this particular case it is also an EJB but it is a Message Driven Bean.
public class MDBEjbMecomsIFSBean implements MessageDrivenBean,
MessageListener {
// context
private MessageDrivenContext m_ctx = null;
// properties filename
private String m_propFile = DEF_PROPFILE;
// application
private String m_app;
// callable function from properties
// private String m_dsJndiName;
// private String m_dsType;
// private String m_dsFunc;
private int m_connRetryMax;
private int m_connRetryWait;
// initial stylesheet transformation file
private String m_xsltFile;
// web service operation name
private String m_operationName;
// trap emitter members from properties
private String m_trapMbeanURL;
private String m_trapObjectName;
private String m_trapAction;
private String m_trapAppName;
private Severity m_trapMax = Severity.CRITICAL;
private int m_trapAfterDelivery;
private boolean m_trapStart;
// jmx members for auto shutdown from properties
private String m_mdbMbeanURL;
private String m_mdbMbeanAccount;
private String m_mdbMbeanPassword;
private String m_mdbObjectName;
private String m_mdbAutoShutdown;
// clob allocator to be used by Oracle jdbc call
// private CLOB m_clob;
* Remember the context for this MDB.
* @param ctx the context for this MDB
public void setMessageDrivenContext(MessageDrivenContext ctx) {
logger.log(Level.FINEST, "Setting MessageDrivenContext");
m_ctx = ctx;
* ejbCreate() is called when the server wants to create a new instance of this MDB.
* At this time a connection with the target is established and the callable statement
public void ejbCreate() {
readProperties();
// Connection errors are IGNORED, because it seems that raising Exceptions from here
// does NOT result in a container managed rollback. Instead the dequeue is commited,
// resulting in AQ message status 2 (success).
// By ignoring the fault, another Exception will occurr in onMessage(), from where
// a propagated exception DOES result in a rollback.
String logStr = "Started TenneT-MDB-" + m_app;
logger.log(Level.FINEST, prefixLog(logStr));
if (m_trapStart)
notify(Severity.NORMAL, logStr);
* This method is called whenever a message is sent to the queue associated with this MDB.
* @param msg assumed to be a javax.jms.TextMessage containting an xml string
public void onMessage(Message msg) {
* msg id, timestamp and length are logged at info level
* msg content is logged at debug level
String msgText = "uninitialized";
String msgId = "undefined";
int msgDeliveryCount = 0;
// this block retrieves msg info from the jms header
// errors are logged as info and ignored
try {
// get msgid first so any subsequent error can be associated with the msg
msgId = msg.getJMSMessageID();
logger.log(Level.FINE, prefixLog("MessageID: " + msgId));
logger.log(Level.FINE,
prefixLog("Enq_time : " + msg.getJMSTimestamp()));
// delivery count can be used to send a critical trap only on the last retry
if (msg.propertyExists(JMS_X_RCV_TIMESTAMP)) {
logger.log(Level.FINE,
prefixLog("Deq_time : " + msg.getIntProperty(JMS_X_RCV_TIMESTAMP)));
// delivery count can be used to send a critical trap only on the last retry
if (msg.propertyExists(JMS_X_DELIVERY_COUNT)) {
msgDeliveryCount = msg.getIntProperty(JMS_X_DELIVERY_COUNT);
logger.log(Level.FINE,
prefixLog("DeliveryCnt: " + msgDeliveryCount));
} catch (Exception e) {
String errStr =
"Minor exception in JMSConsumeMDBBean.onMessage() receiving msg \"" +
msgId + "\": " + e.getMessage();
logger.log(Level.SEVERE, prefixLog(errStr));
// next the message content is addressed
try {
TextMessage message = (TextMessage)msg;
msgText = message.getText();
logger.log(Level.FINE,
prefixLog("MessageLength: " + msgText.length()));
logger.log(Level.FINEST, prefixLog("Msg: " + msgText));
} catch (Exception e) {
String errStr =
"Error in JMSConsumeMDBBean.onMessage() retrieving msg \"" +
msgId + "\": " + e.getMessage();
logger.log(Level.SEVERE, prefixLog(errStr));
notify(Severity.CRITICAL, errStr);
throw new EJBException(errStr);
// From now we can do intial stylesheet transformation if necessary
try {
// Prepare input
XMLDocument xslInput;
XMLDocument xmlInput;
DOMParser parser = new DOMParser();
parser.setPreserveWhitespace(true);
// Parse XSL
parser.parse((MDBEjbMecomsIFSBean.class.getResourceAsStream(m_xsltFile)));
xslInput = parser.getDocument();
// Parse XML
parser.parse((Reader)new StringReader(msgText));
xmlInput = parser.getDocument();
// Instantiate XSL Processor
XSLProcessor processor = new XSLProcessor();
XSLStylesheet stylesheet;
stylesheet = processor.newXSLStylesheet(xslInput);
XMLDocumentFragment xmlOutput =
(XMLDocumentFragment)processor.processXSL(stylesheet,
xmlInput);
// Now prepare xml for use with entity bean
Document xmlDoc = new XMLDocument();
xmlDoc.appendChild(xmlOutput);
*// Invoke Entity Bean to perform lookup of destination Web Service*
Context ctx;
ctx = new InitialContext();
EBEjbMecomsIFSLocalHome ebOppIfsLH =
*(EBEjbMecomsIFSLocalHome)ctx.lookup("java:comp/env/ejb/local/EBEjbopp_ifs");*
EBEjbMecomsIFSLocal ebOppIfs;
ebOppIfs = ebOppIfsLH.create();
*// pass message content to entity bean*
ebOppIfs.setXMLmessage((Element)xmlDoc.getDocumentElement());
*// provide correct soap action*
ebOppIfs.setOperationName(m_operationName);;
*// do actual work*
ebOppIfs.doWork();
} catch (XSLException e) {
logger.log(Level.INFO,
prefixLog("XSL Exception during onMessage " +
e.getMessage()));
} catch (SAXException e) {
logger.log(Level.INFO,
prefixLog("SAX Exception during onMessage " +
e.getMessage()));
} catch (CreateException e) {
logger.log(Level.INFO,
prefixLog("Create Exception during onMessage " +
e.getMessage()));
} catch (NamingException e) {
logger.log(Level.INFO,
prefixLog("Naming Exception during onMessage " +
e.getMessage()));
} catch (IOException e) {
logger.log(Level.INFO,
prefixLog("IO Exception during onMessage " + e.getMessage()));
private void notify(Severity severity, String message) {
logger.log(Level.FINEST,
prefixLog("Started method notify() with severity level " +
severity));
try {
if (m_trapMbeanURL == null || m_trapMbeanURL.equals("")) {
logger.log(Level.WARNING,
prefixLog("No MBean URL! Skipping SNMP trap."));
} else {
logger.log(Level.INFO,
prefixLog("Setting up JMX connection with " +
m_trapMbeanURL));
ObjectName delegateName = null;
MBeanServerConnection mbsc = null;
try {
JMXServiceURL jmxServiceURL =
new JMXServiceURL(m_trapMbeanURL);
JMXConnector connector =
JMXConnectorFactory.connect(jmxServiceURL);
mbsc = connector.getMBeanServerConnection();
delegateName = new ObjectName(m_trapObjectName);
logger.log(Level.FINEST,
prefixLog("JMX connection established with " +
m_trapMbeanURL));
} catch (Exception ex) {
logger.log(Level.SEVERE,
prefixLog("Error while initializing JMX Server connection"),
ex);
throw new EJBException("Error while initializing JMX Server connection",
ex);
String localHost = null;
try {
InetAddress addr = InetAddress.getLocalHost();
localHost = addr.getCanonicalHostName();
logger.log(Level.FINEST,
prefixLog("Localhost=" + localHost));
} catch (UnknownHostException ex) {
logger.log(Level.SEVERE, prefixLog(ex.getMessage()), ex);
throw new EJBException(ex.getMessage(), ex);
// invoke the trapemitter
try {
if (mbsc != null) {
if (severity.ordinal() > m_trapMax.ordinal()) {
severity = m_trapMax;
String severityArg = severityMap.get(severity);
Object[] arguments =
{ severityArg, message, m_trapAppName, localHost };
String[] signature =
{ "java.lang.String", "java.lang.String",
"java.lang.String", "java.lang.String" };
mbsc.invoke(delegateName, m_trapAction, arguments,
signature);
logger.log(Level.INFO,
prefixLog("TrapEmitter invoked: severity=" +
severityArg + " - message=" +
message));
} else {
logger.log(Level.SEVERE,
prefixLog("Error: No MBean server connection established with " +
m_trapMbeanURL));
} catch (MBeanException e) {
logger.log(Level.SEVERE,
prefixLog("Error occured in invoked method"),
e);
} catch (ReflectionException e) {
logger.log(Level.SEVERE, prefixLog(e.getMessage()),
e.getCause());
} catch (IOException e) {
logger.log(Level.SEVERE,
prefixLog("A communication problem occurred when talking to the MBean server"),
e);
} catch (InstanceNotFoundException e) {
logger.log(Level.SEVERE,
prefixLog("The MBean specified is not registered in the MBean server."),
e);
} catch (Exception e) {
logger.log(Level.SEVERE,
prefixLog("Error in method notify. Handling resumes..."));
} finally {
if (severity.equals(Severity.CRITICAL)) {
stopConsuming();
private void stopConsuming() {
logger.log(Level.FINEST, prefixLog("Started method stopConsuming()"));
if ("true".equals(m_mdbAutoShutdown)) {
if (m_mdbMbeanURL == null || m_mdbMbeanURL == "") {
logger.log(Level.WARNING,
prefixLog("No MDB MBean URL! Skipping stopConsuming()."));
} else {
JMXConnector jmxCon = null;
try {
Hashtable<String, String> credentials =
new Hashtable<String, String>();
credentials.put("login", m_mdbMbeanAccount);
credentials.put("password", m_mdbMbeanPassword);
// Properties required to use the OC4J ORMI protocol
Hashtable env = new Hashtable();
env.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"oracle.oc4j.admin.jmx.remote");
env.put(JMXConnector.CREDENTIALS, credentials);
JMXServiceURL serviceUrl =
new JMXServiceURL(m_mdbMbeanURL);
jmxCon =
JMXConnectorFactory.newJMXConnector(serviceUrl, env);
jmxCon.connect();
MBeanServerConnection mbs =
jmxCon.getMBeanServerConnection();
logger.log(Level.FINEST,
prefixLog("JMX connection established with " +
m_mdbMbeanURL));
ObjectName objectName = new ObjectName(m_mdbObjectName);
MessageDrivenBeanMBeanProxy MDBMBean =
(MessageDrivenBeanMBeanProxy)MBeanServerInvocationHandler.newProxyInstance(mbs,
objectName,
MessageDrivenBeanMBeanProxy.class,
false);
MDBMBean.stop();
logger.log(Level.WARNING,
prefixLog("Message consumption suspended"));
} catch (Exception ex) {
logger.log(Level.SEVERE,
prefixLog("Error while initializing JMX Server connection"),
ex);
throw new EJBException("Error while initializing JMX Server connection",
ex);
} else {
logger.log(Level.WARNING,
prefixLog("No AutoShutdown. property=false"));
* Called when the server no longer wants to keep this MDB instance.
* Closes the connection and statement objects created in <code>ejbCreate</code>.
public void ejbRemove() {
try {
cleanup();
} catch (Throwable t) {
logger.log(Level.SEVERE,
prefixLog("Error in ejbRemove(): " + t.getMessage()));
/* Cleanup resources cleanly */
private void cleanup() {
logger.log(Level.INFO, prefixLog("TenneTMDB.cleanup() called."));
// m_dsService = null;
// m_dsCall = null;
private String prefixLog(String logText) {
String logPrefix = "%" + m_app + ": ";
//System.out.println(logPrefix + logText);
return logPrefix + logText;
private void logCause(Throwable e, LogLevel logLevel) {
int i = 0;
String causeStr;
Throwable exception = e.getCause();
while (exception != null) {
i++;
causeStr = "Cause " + i + ": " + exception.getMessage();
switch (logLevel) {
case INFO:
logger.log(Level.INFO, prefixLog(causeStr));
break;
case WARN:
logger.log(Level.WARNING, prefixLog(causeStr));
break;
case ERROR:
logger.log(Level.SEVERE, prefixLog(causeStr));
exception = exception.getCause();
} -
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 -
Error while running EJB from java client on JBOSS
Hi
As i am new to EJB i have created a helloworld application in ejb which is working fine when i try to call it from servlet but when i try to invoke the same ejb from java client (i.e from diff jvm) on jboss i got the following error:
javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]]]
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1399)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:579)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.gl.TestClient.main(TestClient.java:39)
Caused by: javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:254)
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1370)
... 4 more
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:228)
... 5 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:266)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:69)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:62)
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:224)
... 5 more
Following is my code:
Home Interface:
package com.gl;
import javax.ejb.CreateException;
public interface testHome extends EJBHome {
String JNDI_NAME = "testBean";
public test create()
throws java.rmi.RemoteException,CreateException;
Remote Interface:
package com.gl;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface test extends EJBObject {
public String welcomeMessage() throws RemoteException;
Bean:
package com.gl;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class testbean implements SessionBean {
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
public void ejbRemove() throws EJBException, RemoteException {
// TODO Auto-generated method stub
public void setSessionContext(SessionContext arg0) throws EJBException,
RemoteException {
// TODO Auto-generated method stub
public void ejbCreate(){}
public String welcomeMessage(){
return "Welcome to the World of EJB";
ejb-jar.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>testBean</ejb-name>
<home>com.gl.testHome</home>
<remote>com.gl.test</remote>
<ejb-class>com.gl.testbean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
jboss.xml:
<?xml version='1.0' ?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
<jboss>
<enterprise-beans>
<entity>
<ejb-name>testBean</ejb-name>
<jndi-name>testBean</jndi-name>
</entity>
</enterprise-beans>
</jboss>
Client code:
package com.gl;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
public class TestClient {
public static void main(String[] args) throws Exception{
try{
/* Properties props=new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
props.put(Context.PROVIDER_URL, "jnp://localhost:1099");
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
props.put(Context.PROVIDER_URL, "localhost:1099");
System.out.println("Properties ok");
//env.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.naming.HttpNamingContextFactory");
//env.put(Context.PROVIDER_URL,"http://localhost:8080");
//env.put(Context.SECURITY_PRINCIPAL, "");
//env.put(Context.SECURITY_CREDENTIALS, "");
Context ctx=new InitialContext(props);
System.out.println("context ok");
//testHome home = (testHome)ctx.lookup("testBean");
Object obj = ctx.lookup ("testBean");
System.out.println("ojb = " + obj);
testHome ejbHome = (testHome)PortableRemoteObject.narrow(obj,testHome.class);
test ejbObject = ejbHome.create();
String message = ejbObject.welcomeMessage();
System.out.println("home ok");
System.out.println("remote ok");
System.out.println(message);
catch(Exception e){e.printStackTrace();}
I am able to successfully deployed my ejb on JBOSS but i m getting above error when i am trying to invoke ejb from java client.
kindly suggest me something to solve this issue.
Regards
Gagan
Edited by: Gagan2914 on Aug 26, 2008 3:28 AMIs it a remote lookup? Then maybe this will help:
[http://wiki.jboss.org/wiki/JBoss42FAQ]
- Roy -
Creating multiple stateful session beans from a java client. (EJB 3.0)
I'm having difficulties with the following:
To access the ShoppingCartBean, I have to put the following annotation in my standalone java client:
@EJB
private static ShoppingCartRemote shoppingCartBean;
The static must be there, thus only one ShoppingCartBean will exist within my java client. But as the ShoppingCartBean is a stateful session bean, I want to be able to get different beans of the same type.
What is the correct way to do this in EJB 3.0?Great question. Because Home interfaces have been removed for the EJB 3.0 simplified
API, stateful session bean creation happens as a side-effect of injection. However, the
same is true of EJB 3.0 business interface lookups. The easiest way to create additional
stateful session beans is to lookup the same dependency that was declared via your
@EJB annotation.
E.g.,
// Assuming the declaring class is pkg1.ShoppingCartClient.java
InitialContext ic = new InitialContext();
ShoppingCartRemote scr1 = (ShoppingCartRemote)
ic.lookup("java:comp/env/pkg1.ShoppingCartClient/shoppingCartBean");
Note that the name relative to java:comp/env is the default associated with your
@EJB annotation since the name() attribute wasn't used. Alternatively, you
could have used :
@EJB(name="scb") private static ShoppingCartRemote shoppingCartBean;
InitialContext ic = new InitialContext();
ShoppingCartRemote scr1 = (ShoppingCartRemote) ic.lookup("java:comp/env/scb");
Yet another alternative is to declare the @EJB at the class-level. This just defines
the dependency without any injection, which is fine if you want to create a bunch of
them via lookup anyway.
@EJB(name="scb", beanInterface=ShoppingCartRemote.class)
public class .... { -
Finding an EJB object. Web clients vs. Java clients
From what I've read this is the process for a web client to find an EJB object: the client uses JDNI to find a reference to the EJBHome interface and then it uses the create method from this interface which makes the container to begin to work, creating an instance of the implementation class and an instance of the EJBObject interface, and returning a reference to the EJBObject, which will be used by the client to call the methods.
Are there any differences if the client is a java application and not a web client?The Java Client talk to the server with random ports
not 80. Gives me a headache. _*why?
There's no need to get headaches about it, in fact no need to worry about it at all.
Just have the JNDI services available so you can do the lookup (which might require opening a port (or more than one) on the firewall, but that's it.
And that's no different between a standalone client and a web application client. Both need to do that JNDI lookup. -
Problem running Java client of EJB deployed on WebSphere
Hi,
I am using websphere studio 5.1.2 with fix pack 3. I have a sample Stateless Session Bean (EJB) deployed and running on websphere.
I wrote a small Java client program as below.
import java.util.Hashtable;
import HelloJavaHome;
import HelloJava;
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.ejb.EJBHome;
import javax.ejb.EJBObject;
public class RemoteConn {
public static void main(String[] ar) throws Exception{
String greeting = "";
try{
Hashtable env = new Hashtable();
//env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
//env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.ejs.ns.jndi.CNInitialContextFactory");
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.ws.naming.util.WsnInitCtxFactory");
//env.put(Context.PROVIDER_URL, "corbaloc:iiop:myhost.mycompany.com:2809/NameServiceCellPersistentRoot");
env.put(Context.PROVIDER_URL, "iiop://localhost:2809");
System.out.println("Before creating context ");
InitialContext initContext = new InitialContext(env);
System.out.println("Before looking up HelloJavaHome.");
//Object obj = initContext.lookup("java:comp/env/ejb/HelloJavaHome");
Object obj = initContext.lookup("ejb/HelloJavaHome");
System.out.println("After lookup javahome.");
HelloJavaHome home = (HelloJavaHome) javax.rmi.PortableRemoteObject.narrow(obj, HelloJavaHome.class);
HelloJava remote = home.create();
greeting = remote.getGreeting("John");
catch(Exception e){
e.printStackTrace();
System.out.println("Greeting::"+ greeting);
I did not have any problem if I write and run this client from Websphere studio environment..
However its giving lot of compilation and runtime errors when I tried to run from command line.
I could eliminated compilation errors by setting the below jar files in the classpath.
testclient.jar; (client jar of my EJB)
j2ee.jar;
naming.jar;ras.jar;
wsexception.jar;
bootstrap.jar;
namingclient.jar;
websphere.jar;server.jar;
ejbcontainer.jar;
ecutils.jar;
Now it is throwing runtime error after the statement, "Before looking up HelloJavaHome.", has printed. Here is the stack trace of exception ..
Exception in thread "main" java.lang.NoClassDefFoundError: com.ibm.CORBA.iiop.GlobalORBFactory
at com.ibm.ejs.oa.EJSORBImpl.class$(EJSORBImpl.java:44)
at com.ibm.ejs.oa.EJSORBImpl.initializeORB(EJSORBImpl.java:195)
at com.ibm.ejs.oa.EJSClientORBImpl.(EJSClientORBImpl.java:93)
at com.ibm.ejs.oa.EJSClientORBImpl.(EJSClientORBImpl.java:65)
at com.ibm.ejs.oa.EJSORB.init(EJSORB.java:385)
at com.ibm.ws.naming.util.Helpers.getOrb(Helpers.java:284)
at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:369)
at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:112)
at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:422)
at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:143)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at RemoteEJBConn.main(RemoteEJBConn.java:38)
I appreciate if sombody could help me ASAP fixing this problem.
Thanks in advance.Try using the IBM JVM (theres one shipped with WebSphere in websphere_home\AppServer\java
Also include idl.jar and ffdc.jar on the classpath -
Hi
Am I correct in thinking that if I require a browser based Java
client to access an EJB that I have to perform the following ....
SETUP for the browsers
1) You need to remove the iiop10.jar file from the
...Netscape/Communicator/Program/Java/Classes directory. Renaming
this
file is not enough - you must remove it.
2) You need to copy $ORACLE_HOME/lib/aurora_client.jar
$ORACLE_HOME/lib/vbjorb.jar and $ORACLE_HOME/lib/vbjapp.jar into
the
...Netscape/Communicator/Program/Java/Classes directory.
aurora_client.jar is 2.3MB! This effectively means ejb's are
totally useless in the real world if you want to access them from
a browser over the internet.
Somebody please tell me there's an alternative or even better
it's not true.
Thanks
ritchie
nullCheck the JNDI name specified in the xml file.
Hope this will help
Ashish Mangla -
Creating a simple java client for a session EJB local interface
Hi all
Is it possible to create a simple java client for a session ejb local interface with JDeveloper.
The problem is that it creates a test client for a remote interface only...
i.e.
MySessionEJB sessionEJB = context.lookup("MySessionEJB")
and once i try to adjust it manually for the local interface...
MySessionEJBLocal sessionEJB = (MySessionEJBLocal) context.lookup("MySessionEJBLocal") (MySessionEJBLocal - is the name of my local interface)
it generates the exception:
javax.naming.NotFoundException: SessionEJBLocal not found
at...........................(RMIClientContext.java:52)
There is still no problem with accessing the local interface object from the jsf project where i've added <ejb-local-ref> tag into the web.xml file.
but i need the possibility of testing the simple java client for the local interface to test business methods wich should return objects without indirect properties
Thanks in advance.
Alex.Pedja thanks for reply.
I still dont understand what is wrong with my example.
The first peace of the code i wrote (getting the reference to the remote interface object) works pretty well, and even more it is produced automatically by JDeveloper, so why we cant get a reference to the local interface object the same way?
Certanly we should use the local interface for getting access to the resource functioning under the same local jvm and i think it doesnt metter wich app server we really use wls or oas or others
Thanks. Alex. -
Access a normal java class from EJB
how can i access normal java class from an EJB.
I do not want to write the business logic inside the EJB. How can I achieve this.There's no special API for doing this. Just use normal java. E.g.
@Stateless
public class FooBean implements Foo {
public void foo() {
// access non-EJB utility class Bar
Bar b = new Bar();
b.bar();
} -
RMI - EJB Standalone Java client
Hello,
We have a standalone Java client attempting to invoke a EJBs running on OC4J. We get a user not allowed to access namespace...check orion-application.xml file... Any ideas what could be the problem.
Regards.Hi,
In access namespace tag of your orion-application.xml, you should specify the same user as the one used by your java client.
Hope that helps
regards -
EJB Java Client to Corba C++ object
Does BEA have any examples of calling from an EJB java client to a CORBA C++ object
(please no Tuxedo examples, thank you)?
I've tried the c++ -> EJB examples, however now I need the other way around.
thanks,
SeanAndy Piper <[email protected]> wrote:
"Sean Cloutier" <[email protected]> writes:
Does BEA have any examples of calling from an EJB java client to aCORBA C++ object
(please no Tuxedo examples, thank you)? Not that I am aware of. This is just a standard CORBA client scenario.
andy
-- Cool, thanks Andy! -
Problem in invoking a BPEL flow using java client
Hi,
We are new to BPEL. We tried invoking a flow (assign, invoke, assign) from a java client and we are facing the following exception :
=========================
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting f
or response has timed out. The conversation id is null. Please check the process
instance for detail.
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname: alk3wks30a
com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response ha
s timed out. The conversation id is null. Please check the process instance for
detail.
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder
.java:251)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:168)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(Deseri
alizationContextImpl.java:1001)
at org.apache.crimson.parser.Parser2.maybeElement(Unknown Source)
at org.apache.crimson.parser.Parser2.content(Unknown Source)
at org.apache.crimson.parser.Parser2.maybeElement(Unknown Source)
at org.apache.crimson.parser.Parser2.content(Unknown Source)
at org.apache.crimson.parser.Parser2.maybeElement(Unknown Source)
at org.apache.crimson.parser.Parser2.parseInternal(Unknown Source)
at org.apache.crimson.parser.Parser2.parse(Unknown Source)
at org.apache.crimson.parser.XMLReaderImpl.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Deserializa
tionContextImpl.java:242)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
at org.apache.axis.client.Call.invokeEngine(Call.java:2545)
at org.apache.axis.client.Call.invoke(Call.java:2515)
at org.apache.axis.client.Call.invoke(Call.java:2210)
at org.apache.axis.client.Call.invoke(Call.java:2133)
at org.apache.axis.client.Call.invoke(Call.java:1656)
at SampleClient.initiate(SampleClient.java:87)
at SampleClient.main(SampleClient.java:126)
==========================================================
Here is our java client.
import javax.xml.namespace.QName;
import javax.xml.rpc.JAXRPCException;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.encoding.XMLType;
import javax.xml.rpc.soap.SOAPFaultException;
import org.apache.axis.client.Call;
* @version 2.0 $Date: 07-mar-2005.05:07:45 $
* @author Copyright (c) 2004 by Oracle. All Rights Reserved.
public class SampleClient
private static QName SERVICE_NAME;
private static QName PORT_TYPE;
private static QName OPERATION_NAME;
private static String SOAP_ACTION;
private static String STYLE;
private static String THIS_NAMESPACE = "http://xmlns.oracle.com/Hello";
private static String PARAMETER_NAMESPACE = "http://xmlns.oracle.com/Hello";
private String location;
static
SERVICE_NAME = new QName(THIS_NAMESPACE,"Hello");
PORT_TYPE = new QName(THIS_NAMESPACE,"HelloPort") ;
OPERATION_NAME = new QName(THIS_NAMESPACE,"process");
SOAP_ACTION = "process";
STYLE = "document";
public void setLocation(String location)
this.location = location;
public void initiate() throws Exception
try
/* Create Service and Call object */
ServiceFactory serviceFactory = ServiceFactory.newInstance();
Service service = serviceFactory.createService( SERVICE_NAME );
Call call = (Call)service.createCall( PORT_TYPE );
/* Set all of the stuff that would normally come from WSDL */
call.setTargetEndpointAddress( location );
call.setProperty(Call.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
call.setProperty(Call.SOAPACTION_URI_PROPERTY, SOAP_ACTION);
call.setProperty( Call.OPERATION_STYLE_PROPERTY , STYLE );
call.setOperationName(OPERATION_NAME);
call.addParameter(new QName(PARAMETER_NAMESPACE,"input"), XMLType.XSD_STRING, ParameterMode.IN);
//call.setReturnType(new QName(PARAMETER_NAMESPACE,XMLType.XSD_STRING));
call.setReturnType(new QName("http://www.w3.org/2001/XMLSchema","string"));
Object[] params = new Object[1];
params[0] = new String("Sanju");
/* Invoke the service */
String result = (String)call.invoke(params);
System.out.println( "UseStockReviewSheet BPEL process initiated"+ result );
catch (SOAPFaultException e)
System.err.println("Generated fault: ");
System.out.println (" Fault Code = " + e.getFaultCode());
System.out.println (" Fault String = " + e.getFaultString());
catch (JAXRPCException e)
System.err.println("JAXRPC Exception: " + e.getMessage());
catch (ServiceException e)
System.err.println("Service Exception: " + e.getMessage());
public static void main(String[] args) throws Exception
//String symbol = "ORCL";
String location = "http://localhost:1000/orabpel/default/Hello/1.0";
SampleClient client = new SampleClient();
/* if(args.length == 1)
symbol = args[0];
else if(args.length ==2)
location = args[0];
symbol = args[1];
client.setLocation( location );
client.initiate();
Please help us in fixing the problem
Thanks In AdvanceHi,
Thanks a lot for your reply. When we tested the process flow in BPEL console it is giving desired output. The exception trace in the dos console is as following
======================================
06/07/04 18:08:01 at com.collaxa.cube.engine.ext.wmp.BPELAssignWMP.evalFro
mValue(BPELAssignWMP.java:490)
06/07/04 18:08:01 at com.collaxa.cube.engine.ext.wmp.BPELAssignWMP.__execu
teStatements(BPELAssignWMP.java:122)
06/07/04 18:08:01 at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perfo
rm(BPELActivityWMP.java:188)
06/07/04 18:08:01 at com.collaxa.cube.engine.CubeEngine.performActivity(Cu
beEngine.java:3408)
06/07/04 18:08:01 at com.collaxa.cube.engine.CubeEngine.handleWorkItem(Cub
eEngine.java:1836)
06/07/04 18:08:01 at com.collaxa.cube.engine.dispatch.message.instance.Per
formMessageHandler.handleLocal(PerformMessageHandler.java:75)
06/07/04 18:08:01 at com.collaxa.cube.engine.dispatch.DispatchHelper.handl
eLocalMessage(DispatchHelper.java:166)
06/07/04 18:08:01 at com.collaxa.cube.engine.dispatch.DispatchHelper.sendM
emory(DispatchHelper.java:252)
06/07/04 18:08:01 at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEng
ine.java:5438)
06/07/04 18:08:01 at com.collaxa.cube.engine.CubeEngine.createAndInvoke(Cu
beEngine.java:1217)
06/07/04 18:08:01 at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.creat
eAndInvoke(CubeEngineBean.java:120)
06/07/04 18:08:01 at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncC
reateAndInvoke(CubeEngineBean.java:153)
06/07/04 18:08:01 at ICubeEngineLocalBean_StatelessSessionBeanWrapper0.syn
cCreateAndInvoke(ICubeEngineLocalBean_StatelessSessionBeanWrapper0.java:486)
06/07/04 18:08:01 at com.collaxa.cube.engine.delivery.DeliveryHandler.init
ialRequestAnyType(DeliveryHandler.java:520)
06/07/04 18:08:01 at com.collaxa.cube.engine.delivery.DeliveryHandler.init
ialRequest(DeliveryHandler.java:435)
06/07/04 18:08:01 at com.collaxa.cube.engine.delivery.DeliveryHandler.requ
est(DeliveryHandler.java:132)
06/07/04 18:08:01 at com.collaxa.cube.ws.soap.providers.CXSOAPProvider.pro
cessBPELMessage(CXSOAPProvider.java:632)
06/07/04 18:08:01 at com.collaxa.cube.ws.soap.providers.CXSOAPProvider.inv
oke(CXSOAPProvider.java:133)
06/07/04 18:08:01 at org.collaxa.thirdparty.apache.axis.strategies.Invocat
ionStrategy.visit(InvocationStrategy.java:32)
06/07/04 18:08:01 at org.collaxa.thirdparty.apache.axis.SimpleChain.doVisi
ting(SimpleChain.java:118)
06/07/04 18:08:01 at org.collaxa.thirdparty.apache.axis.SimpleChain.invoke
(SimpleChain.java:83)
06/07/04 18:08:01 at org.collaxa.thirdparty.apache.axis.handlers.soap.SOAP
Service.invoke(SOAPService.java:450)
06/07/04 18:08:01 at org.collaxa.thirdparty.apache.axis.server.AxisServer.
invoke(AxisServer.java:285)
06/07/04 18:08:01 at org.collaxa.thirdparty.apache.axis.transport.http.Axi
sServlet.doPost(AxisServlet.java:653)
06/07/04 18:08:01 at javax.servlet.http.HttpServlet.service(HttpServlet.ja
va:760)
06/07/04 18:08:01 at org.collaxa.thirdparty.apache.axis.transport.http.Axi
sServletBase.service(AxisServletBase.java:301)
06/07/04 18:08:01 at com.collaxa.cube.fe.CollaxaServlet.service(CollaxaSer
vlet.java:134)
06/07/04 18:08:01 at javax.servlet.http.HttpServlet.service(HttpServlet.ja
va:853)
06/07/04 18:08:01 at com.evermind.server.http.ServletRequestDispatcher.inv
oke(ServletRequestDispatcher.java:824)
06/07/04 18:08:01 at com.evermind.server.http.ServletRequestDispatcher.for
wardInternal(ServletRequestDispatcher.java:330)
06/07/04 18:08:01 at com.evermind.server.http.HttpRequestHandler.processRe
quest(HttpRequestHandler.java:830)
06/07/04 18:08:01 at com.evermind.server.http.HttpRequestHandler.run(HttpR
equestHandler.java:285)
06/07/04 18:08:01 at com.evermind.server.http.HttpRequestHandler.run(HttpR
equestHandler.java:126)
06/07/04 18:08:01 at com.evermind.util.ReleasableResourcePooledExecutor$My
Worker.run(ReleasableResourcePooledExecutor.java:186)
06/07/04 18:08:01 at java.lang.Thread.run(Thread.java:534)
<2006-07-04 18:08:01,441> <ERROR> <default.collaxa.cube.xml> com.oracle.bpel.cli
ent.BPELFault: faultName: {{http://schemas.xmlsoap.org/ws/2003/03/business-proce
ss/}selectionFailure}
messageType: {null}
parts: {{summary=<summary>empty variable/expression result.
xpath variable/expression expression "/client:HelloProcessRequest/client:input"
is empty at line 37, when attempting reading/copying it.
Please make sure the variable/expression result "/client:HelloProcessRequest/cli
ent:input" is not empty.
</summary>}}
==========================================
And the Error logging in domain.log is
<2006-07-04 18:08:01,441> <ERROR> <default.collaxa.cube.xml> com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure}
messageType: {null}
parts: {{summary=<summary>empty variable/expression result.
xpath variable/expression expression "/client:HelloProcessRequest/client:input" is empty at line 37, when attempting reading/copying it.
Please make sure the variable/expression result "/client:HelloProcessRequest/client:input" is not empty.
</summary>}}
Wating for ur response.
Thank you. -
In terms of scalabilty, will static method in normal java class better than
You only have one copy of the static method in memory, but you have a few copy of the stateless session bean, plus the overhead of those session bean.So isn't static method of normal java class more scalable than stateless session bean.
Then you have to take care of transaction management, connection pooling, etc other ejb services all by your self.
In fact stateless session beans acts more like a static class. They do not get destroyed when remove() method is called on client stub. Similarly they are not always gets created whenever someone calls create() method on home interface!! (Again it's specific to appserver implementation)
Thx.
Maybe you are looking for
-
Can we show pop3 output by java FX?
suppose i hava a .java where i have code to access my pop3.can it be possible to show that INBOX in java FX window??
-
What can i replace this bind variable with in function?
Hello I am creating a report showing training attended by employees. I have written a function to do the following: Parameters 1 - 4 is hard coded for a reason. So we dont worry about them. 5th parameter: :START_DATE represents the date training star
-
Movie Playlist Autoplay next movie
Since the latest update of the iTunes for Windows 7 (x64) that my movie playlists don't play automaticly from the end of the movie A to the begining of the movie B and so on... In the latest version this works perfectly, and now I don't know how it s
-
Import Active Directory Data into SAP HR
We are currently working on updating user data in Active directory from data stored in SAP HR via the LDAP Connector. This is working great! The question is what is required to make this happen the other way around. Ex Employee email address is stor
-
Crystal report could not show dynamic picture
I develop crystal report which show dynamically picture in my PC but when I send it to server which has not be installed program just install asp.net framework 2.0 , it could not show dynamic picture. How should I do, please advise.