Initial Context Properties
Hi,
I'm using RAD 6 and the embedded messaging server. I'm trying to configure the initial context. Can anyone tell me wht it needs to be configured as.
try {
env.put(Context.INITIAL_CONTEXT_FACTORY,"*******");
env.put(Context.PROVIDER_URL, "****");*/
ctx = new InitialContext();
System.out.println("Set CONN FACTORY");
queueConnectionFactory = (QueueConnectionFactory)PortableRemoteObject.narrow(ctx.lookup(connectionFactoryName),QueueConnectionFactory.class);
System.out.println("SET CONNECTION");
queueConnection = queueConnectionFactory.createQueueConnection();
System.out.println("SET SESSION");
queueSession = (QueueSession) queueConnection.createSession(false, QueueSession.AUTO_ACKNOWLEDGE);
System.out.println("SET QUEUE");
queue = (Queue)PortableRemoteObject.narrow(ctx.lookup(queueName), Queue.class);
queueSender = queueSession.createSender(queue);I'm getting the following error,
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
And i aslo need it to work with MQ Series version 6.0, let me know the env properties for that also.
regards,
karthik
env.put(Context.INITIAL_CONTEXT_FACTORY,"*******");
env.put(Context.PROVIDER_URL, "****");*/
ctx = new InitialContext();
Modify the last line as:
ctx = new InitialContext(env);That's what the error message is telling you. :-)
Similar Messages
-
How to get Initial context of Local Interface in weblogic 8.1
I have developed a local entity bean but i wouldnt able to initial context of that bean
CAN ANYBODY HELP ME
bean deployment descriptor
<?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'>
<!--
** This file was automatically generated by EJBGen 2.16
** Build: 20031001-1049
-->
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>CabinBean</ejb-name>
<home>my.CabinRemoteHome</home>
<remote>my.CabinRemote</remote>
<ejb-class>my.CabinBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>True</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CabinBean</abstract-schema-name>
<cmp-field>
<field-name>bedCount</field-name>
</cmp-field>
<cmp-field>
<field-name>deckLevel</field-name>
</cmp-field>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>name</field-name>
</cmp-field>
<cmp-field>
<field-name>shipId</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
<security-identity>
<use-caller-identity/>
</security-identity>
</entity>
<entity>
<ejb-name>CabinLocal</ejb-name>
<local-home>my.CabinLocalHome</local-home>
<local>my.CabinLocalLocal</local>
<ejb-class>my.CabinLocal</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>True</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CabinLocal</abstract-schema-name>
<cmp-field>
<field-name>bedCount</field-name>
</cmp-field>
<cmp-field>
<field-name>deckLevel</field-name>
</cmp-field>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>name</field-name>
</cmp-field>
<cmp-field>
<field-name>shipId</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
<ejb-local-ref>
<ejb-ref-name>LocalCabin</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>CabinLocalHome</local-home>
<local>CabinLocal</local>
<ejb-link>LocalCabin</ejb-link>
</ejb-local-ref>
<security-identity>
<use-caller-identity/>
</security-identity>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>CabinLocal</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>CabinBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
<ejb-client-jar>EjbClient</ejb-client-jar>
</ejb-jar>
************************************** Client Code****************
package com;
import my.CabinBean;
import my.CabinRemoteHome;
import my.CabinRemote;
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.NamingException;
import java.rmi.RemoteException;
import java.util.Properties;
import javax.rmi.PortableRemoteObject;
import weblogic.jndi.Environment;
public class Test
public static void main(String args[])
try{
Context context = getInitialContext();
Object cab = context.lookup("CabinLocalHome");
///**********-- Exception is thrown at this point -******************
System.out.println("============ done====");
Context ct = getInitialContext();
Object ref = ct.lookup("CabinHomeRemote");
CabinRemoteHome home = (CabinRemoteHome)PortableRemoteObject.narrow(ref,CabinRemoteHome.class);
//CabinRemote cab = home.create(new Integer(1));
//cab.setName("Master Suite");
//cab.setDeckLevel(new Integer(1));
//cab.setShipId(new Integer(1));
//cab.setBedCount(new Integer(1));
Integer pk = new Integer(1);
CabinRemote cab1 = home.findByPrimaryKey(pk);
System.out.println("--->>>>>>>> "+cab1.getName());
System.out.println("--->>>>>>>> "+cab1.getShipId());
System.out.println("--->>>>>>>>"+cab1.getBedCount());
System.out.println("--->>>>>>>>"+cab1.getDeckLevel());
System.out.println("---");
}catch(java.rmi.RemoteException e){e.printStackTrace();}
catch(javax.naming.NamingException e){e.printStackTrace();}
//catch(javax.ejb.CreateException e){e.printStackTrace();}
catch(javax.ejb.FinderException e){e.printStackTrace();}
public static Context getInitialContext() throws javax.naming.NamingException
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
return new javax.naming.InitialContext(p);
} ************************************** Error ***********************
javax.naming.LinkException: [Root exception is javax.naming.LinkException: [Root exception is javax.naming.NameNotFoundException: remaining name: /app/ejb/myejb.jar#CabinLocal/local-home]; Link Remaining Name: 'null']; Link Remaining Name: 'java:app/ejb/myejb.jar#CabinLocal/local-home'
at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:284)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
at weblogic.jndi.internal.ServerNamingNode_813_WLStub.lookup(Unknown Source)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:369)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:357)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at com.Test.main(Test.java:27)
Caused by: javax.naming.LinkException: [Root exception is javax.naming.NameNotFoundException: remaining name: /app/ejb/myejb.jar#CabinLocal/local-home]; Link Remaining Name: 'null'
at weblogic.jndi.internal.WLNamingManager.getObjectInstance(WLNamingManager.java:98)
at weblogic.jndi.internal.ServerNamingNode.resolveObject(ServerNamingNode.java:292)
at weblogic.jndi.internal.BasicNamingNode.resolveObject(BasicNamingNode.java:771)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:191)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: javax.naming.NameNotFoundException: remaining name: /app/ejb/myejb.jar#CabinLocal/local-home
at weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:35)
at weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:39)
at weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:57)
at weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:62)
at weblogic.jndi.factories.java.ReadOnlyContextWrapper.lookup(ReadOnlyContextWrapper.java:45)
at weblogic.jndi.internal.AbstractURLContext.lookup(AbstractURLContext.java:130)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at weblogic.jndi.internal.WLNamingManager.getObjectInstance(WLNamingManager.java:96)Hi,
from what I gather, u have two jars
1. EJBClient - this will have remote and home interfaces and will be used by the client
2. myEJB - this iwll have all the classes - remote & home interfaces, the bean class and all the other classes required by the bean.
Now, the question is, who is acting as the client of your EJB ? There are 3 possibilities
1. A servlet
2. Another EJB
3. a simple java program.
In the first 2 cases, you can go for Local Interfaces (more so in the second case than the first). The reason being that the the client and server will be in the same JVM. Thus, in the first case, if the Web container and the ejb container are in the same app server, EJBs can be local.
However, in the third case, it is unlikey that you will have the client runnng and the same jvm as the server, because the server is using the jvm provided by weblogic.
Thus, you cannot use local interfaces in this 3rd case. I have a feeling that this is what you are doing. If so, change the local interfaces to remote.
See if this helps. Else, I will mail you some sample code. But I am afraid, sample code wont be of much help bcoz this seems to be a design problem.
regards -
Error in getting Initial Context
Hello,
I am facing the following exception while trying to get the Initial Context. Following
is the snippet of code that I use for getting the Context -
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");p.
put(Context.PROVIDER_URL, url);
if (user != null) {
p.put(Context.SECURITY_PRINCIPAL, user);
if (password == null)
password = "";
p.put(Context.SECURITY_CREDENTIALS, password);
return new InitialContext(p);
The following is the exception that I encounter -
javax.naming.AuthenticationException. Root exception is java.lang.SecurityException:
attempting to add an object which is not an instance of java.security.Principal
to a Subject's Principal Set
Am i missing anything. Thanks for your time.
See the attached file for the details of the exception
Thanks,
Ashutosh
[trace.txt]Hi Tim,
If you are running within a browser, you will not have access to anything
outside the sandbox which includes making RMI calls. Try signing the applet.
You can find more information on signing applets on the sun java website.
Regards
Arjuna
"Tim" <[email protected]> wrote in message
news:3c5ab818$[email protected]..
>
I get the following eror when I try to get the Initial Context in anapplet:
>
java.lang.ExceptionInInitializerError: java.security.Acc
ess denied (java.util.PropertyPermission * read,write)
atjava.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:272)
atjava.security.AccessController.checkPermission(AccessController.java:
399)
Does anyone have any idea what would cause this? The code works finerunning
from an application. From what I understand there might be a problem withmy
policy file. However, it seems to look ok. Any ideas? -
I have developed local entity bean in weblogic 8.1
but i wouldnt able to get the Initial Context of the Bean.
It throws javax.naming.NoInitialContextException
But in jndi tree it shows the bean..
the problem is only for Local Bean
Remote Beans are working fineG,
One thing I would make sure of is that you are not deploying oc4j.jar file as part of you ear. Check the 'exploded' ear file under WEB-INF/lib to ensure that you do not have an oc4j.jar file under it.
It usually happens that in your Jdev Project, if you had included the oc4j.jar library solely to compile, but when you generated the deployment profile it would by default include all the libraries that are part of the project. You can correct this by right clicking the deployment profile and editing its properties to exclude the libraries that you don't want to deploy. -
hi
i have written a jms message sender and receiver.
i am using j2ee server to provide the jms service.
no how do i get the initial context.
i am not able to get the initial context and it is giving
NoInitialContextException
could anyone help me out.
thanks and regards,
rajesh.Hi, When you create InitialContext, context's environment should be in the system properties or you can pass it to the constructor. Those properties vary J2EE server to server.
For example, if you are using Weblogic it goes like this
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context intialContext = new InitialContext(env); -
Hi!
I am using a jndi initial context object to lookup my ejbs in weblogic.
There are places, where I initialize the initial context differently. I was
wondering if it's ok to do that.
For example,
Scenario A:
InitialContext context = new InitialContext();
context.lookup("some bean");
Scenario B:
HashMap prop = new HashMap();
prop.set(contextFactory, ...);
prop.set(providerUrl, ...);
InitialContext context = new InitialContext();
context.lookup("some bean");
Should I foresee any kind of problems with Scenario A. Does weblogic know
what context factory and provider url to use if I don't mention it.
Thanks in advance,
VanIf you are creating InitialContext inside the container, you
do not need to specify any properties - it is container's responsibility
to set them up.
van saravanan <[email protected]> wrote:
Hi!
I am using a jndi initial context object to lookup my ejbs in weblogic.
There are places, where I initialize the initial context differently. I was
wondering if it's ok to do that.
For example,
Scenario A:
InitialContext context = new InitialContext();
context.lookup("some bean");
Scenario B:
HashMap prop = new HashMap();
prop.set(contextFactory, ...);
prop.set(providerUrl, ...);
InitialContext context = new InitialContext();
context.lookup("some bean");
Should I foresee any kind of problems with Scenario A. Does weblogic know
what context factory and provider url to use if I don't mention it.
Thanks in advance,
Van--
Dimitri -
Initial context and PROVIDER_URL default
I´d like a short way to put into the initial context the correct provider.
Default value of PROVIDER_URL is "t3://localhost:7001", but this is tied to a specific port (I run two instances of Weblogic in a development environment).
How can I detect on wich port is running my instance of weblogic server in order to put the provider value in an independent way.
Thanks,I am fairly new to JBoss as well, so I may be of limited help here. Although JBoss can use a jndi.properties file (as you are using) I have not experimented with this appraoch as of yet ...I supply a Hashtable filled with the appropriate properties.
i.e.
java.util.Hashtable props = new java.util.Hashtable();
props.put(
Context.INITIAL_CONTEXT_FACTORY,
props.put(
Context.PROVIDER_URL,
props.put(
Context.URL_PKG_PREFIXES,
Context ctx = null;
try {
ctx = new InitialContext(props);
} catch (NamingException ne) {
System.out.println("Failed to create JNDI context from EJB server.");
System.out.println(ne.toString(true));
}However, I am starting to think this might not be the problem. I was reading the JBoss newsgroup yesterday and there are some jars from the JBoss "client" folder that need to be included in the classpath when running your client, but I sent the doc I created home (I could verify for you later if we can'y figure it out here from memory). You need two for sure, one being $JBOSS_HOME/client/log4j.jar and the other being (something like) $JBOSS_HOME/client/clientall-jboss.jar
If you experiment with what you find in the client folder in the JBoss install dir, you will likely find the jars you need in the classpath by process of elimination.
Hope this helps, sorry all my references are at home at the moment.
GumB. -
Why can't I get an initial context in websphere!?!
I am using WebSphere App Dev v.4.0, and I have written a client application which should call methods from an EJB. But I don't seem to be able to get an initial context no matter what I do. Here is a snippet of the app code and the exception it throws: I will be most grateful if someone could help me out. Thanks Ben.
THE CODE...
try {
System.out.println("about to retrieve initial context.");
java.util.Properties p = new java.util.Properties();
p.put(Context.PROVIDER_URL, "iiop://localhost:901");
p.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
InitialContext initContext = new InitialContext(p);
System.out.println("initial context has been created.");
}catch (Exception e) {
e.printStackTrace();
THE EXCEPTION...
about to retrieve initial context.
javax.naming.NoInitialContextException: Cannot instantiate class: com.ibm.websphere.naming.WsnInitialContextFactory. Root exception is java.lang.ClassNotFoundException: com.ibm.websphere.naming.WsnInitialContextFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:325)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:257)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:212)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:656)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:199)
at BeanClient.main(BeanClient.java:18)Hi Ben,
As the gurus told in the earlier replies, it is the problem with Class loading.
Make Sure that following jar files are in CLASSPATH. (Assuming C:\Websphere is your websphere installation directory)
J2EE.jar - C:/Websphere/AppServer/lib/J2ee.jar
Websphere.jar - C:/Websphere/AppServer/lib/websphere.jar
Ibmorb.jar - C:/Websphere/AppServer/java/jre/lib/ext/ibmorb.jar
Once you have all these in your CLASSPATH, try running your client application. If you are using Sun JDK you will encounter an error message in the runtime which says like "Service Unavaible.. XXXX Service not found".
When you encounter this problem make sure that your service named XXXX is running and you are calling it appropriately. To find whether a service with name XXXX is running type
>>>>dumpnamespace
at the command prompt. If your service name is listed by dumpnamespace.. your service is running. So there is something wrong with the client code. Proceed to the next step.
In this tep you can use IBM JDK to fix the error. But that might not be the most suitable solution.
Here is how you can run Websphere EJB client programs without IBM JDK.
http://www7b.software.ibm.com/wsdd/downloads/pluggableclient.html
Follow this link and download the Websphere Pluggable application client and follow the instructions given in Readme to install the pluggable application client.
Once you finish installing the pluggable application client, you should be able to run with no problems.
For dwildcat92
I was also under the impression that we SHOULD use IBM JDK to make the client run. But our integration process demanded that the clients be called from Apache Tomcat. Thats how I was forced to find this link
http://www7b.software.ibm.com/wsdd/downloads/pluggableclient.html
Thanks for making me learn guys,
Ravi. -
Why can't I get an initial context??!!
I am using WebSphere App Dev v.4.0, and I have written a client application which should call methods from an EJB. But I don't seem to be able to get an initial context no matter what I do. Here is a snippet of the app code and the exception it throws: I will be most grateful if someone could help me out. Thanks Ben.
THE CODE...
try {
System.out.println("about to retrieve initial context.");
java.util.Properties p = new java.util.Properties();
p.put(Context.PROVIDER_URL, "iiop://localhost:901");
p.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
InitialContext initContext = new InitialContext(p);
System.out.println("initial context has been created.");
}catch (Exception e) {
e.printStackTrace();
THE EXCEPTION...
about to retrieve initial context.
javax.naming.NoInitialContextException: Cannot instantiate class: com.ibm.websphere.naming.WsnInitialContextFactory. Root exception is java.lang.ClassNotFoundException: com.ibm.websphere.naming.WsnInitialContextFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:325)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:257)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:212)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:656)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:199)
at BeanClient.main(BeanClient.java:18)Is it Manadatory to keep the jar(containing the vendor specific context factory ) in the class path ?
E.g Bean A in Appserver 1 wants to invoke Bean B in Appserver 2.
In Appserver 1 's local Classpath may not have the above mentioned jar.
The problem is , I m using java.rmi.server.codebase url.I m able to load the context factory class using RMIClassLoader and code base url(having the Appserver 2 required classes), BUT when I try to create the new InitialCoNtext for Appserver 2(from Appserver 1), it says contextFactory class not found !! it's finding the class in local Classpath !
Please help
Thanks -
Error in ArjunaMs Provider: Could not set up Initial Context
Hi,
I am trying to run the chatdemo example that comes with arjunams using http as the protocol and for that I have changed the file "chatdemo.properties" to this:
java.naming.factory.initial=com.arjuna.ams.client.naming.AMSInitialContextFactory
java.naming.provider.url=ams://server?web#http://localhost:8090/WebConnect/WebConnect
I have already tried running the tomcat server in port 8080 now I am trying it in 8090 and I have WebConnect.war deployed in webapps folder. When I run the chatdemo I get the following error:
Caught exception getting properties from file
javax.naming.CommunicationException: Cannot set up Initial Context : Timeout whe
n communicating with the server (ams.timeout=3000 [milliseconds]). [Root excepti
on is [TIMEOUT_EXCEPTION]com.arjuna.ams.internal.client.common.TransportExceptio
n: Timeout when communicating with the server (ams.timeout=3000 [milliseconds]).
at com.arjuna.ams.internal.client.core.AbstractInitialContext.<init>(Abs
tractInitialContext.java:171)
at com.arjuna.ams.internal.client.transport.server.InitialContext.<init>
(InitialContext.java:72)
at com.arjuna.ams.internal.client.transport.server.web.naming.InitialCon
text.<init>(InitialContext.java:40)
at com.arjuna.ams.internal.client.transport.server.web.naming.InitialCon
textFactory.getInitialContext(InitialContextFactory.java:41)
at com.arjuna.ams.client.naming.AMSInitialContextFactory.getInitialConte
xt(AMSInitialContextFactory.java:360)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
62)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.<init>(InitialContext.java:195)
at com.arjuna.ams.demos.chat.core.JMSChatInterface.<init>(JMSChatInterfa
ce.java:240)
at com.arjuna.ams.demos.chat.ui.text.TextClient.test(TextClient.java:163
at com.arjuna.ams.demos.chat.ui.text.TextClient.main(TextClient.java:67)
Caused by: [TIMEOUT_EXCEPTION]com.arjuna.ams.internal.client.common.TransportExc
eption: Timeout when communicating with the server (ams.timeout=3000 [millisecon
ds]).
at com.arjuna.ams.internal.client.common.MessageCarrierBuffer.get(Messag
eCarrierBuffer.java:67)
at com.arjuna.ams.internal.client.common.RPCMapper.sendRPC(RPCMapper.jav
a:102)
at com.arjuna.ams.internal.client.transport.server.TransportManager.init
(TransportManager.java:139)
at com.arjuna.ams.internal.client.transport.server.InitialContext.create
TransportLayer(InitialContext.java:102)
at com.arjuna.ams.internal.client.core.AbstractInitialContext.createComm
Chain(AbstractInitialContext.java:999)
at com.arjuna.ams.internal.client.core.AbstractInitialContext.<init>(Abs
tractInitialContext.java:165)
What can be the error? Please I need help urgently!!!
Thanks in advance!Hi RESIDENT2,
First of all, please let me apologise for the delay in response time to your message! Unfortunately it seems as though we missed this one.
Can I suggest to you that the best place to get help with ArjunaMS is from:
http://www.arjuna.com/forum/
As far as your problem is concerned it appears as though you have performed the correct procedures to setup ArjunaMS, if your problem still exists can I ask you to post a complete description of the system as it stands.
NOTE: To check the WebConnect servlet is running you should be able to connect to http://localhost:8090/WebConnect, which should display a welcome page for the servlet. If this welcome screen cannot be seen then the servlet failed to deploy.
Once again, sorry for the delayed response!
Cheers,
Tom
Arjuna Technologies Limited -
Migrating from 4.1 to 6.1, context.properties
Hello,
I currently have this line in my context.properties file:
context.global.sessionCookie=PublicSessionID
in my 4.1 environment.
I am trying to create same application on other machine running Sun One Web Server 6.1, which does not have a context.properties file. I have managed to reconfigure my servlets and rules.properties to web.xml and am now building a war instead of a jar. I have updated my obj.conf and magnus.conf.
Where do I put this line in a Sun One Web Server 6.1 environment?I created a sun-web.xml file, and set the reuseSessionID to be true:
<sun-web-app>
<property name="reuseSessionID" value="true"/>
</sun-web-app>
This allowed me to use the same cookie session across both instances, which worked.
Until I installed a SSL cert on one instance. Now from the public to the private side, I can see the same session Id, but when I go from private to public, I get a new Session ID.
Any ideas? -
I have read the posts about caching initial context lookups and have
implemented the solution and seen some benefits.
I am dealing with a third party application that I cannot change.
When I put my InitialContextFactory in the architecture I also logged
how many getInitialContext() calls were being made - I was absolutely
shocked - often 4+ per user transaction. I suspect that the code gets
one, does a call and dereferences all over the place.
90% of InitialContexts had the same environment passed to the getIC()
call so it struck me that what I should do is create a pool of IC, and
in my factory just serve one from the pool.
So, the question is, what is the best way of detecting when the IC has
been dereferenced so I know I can serve it again from my pool?
I presume this is a generic pool problem when you can't guarantee that
your client's will be good citizens and call a close() method or
similar.
I've posted here as it is performance related; also, is there any
reason why what I am doing is not a good idea?
Can the client do something with the IC which means it is not suitable
for use by another client? If so, can I detect this so I may discard?
As always, many thanks in advance.
Presuming I can get it to work I will post the code so that we can all
share ;-)
Cheers
EdWhy don't you instrument your factory then to give out your own
implementation of InitialContext that will in fact only wrap a "loaner"
InitialContext every time a method is invoked on it and before returning
the value to the caller will put the real InitialContext back to the
pool to be reused by another one.
Then your clients can do whatever they want with those ICs and still
would not cause so big performance hits.
It's just an idea that just came to mind and I haven't tested it so it
might have flaws but it looks viable.
--dejan
Ed Barrett wrote:
The application is a third-party product that cannot be changed.
By introducing the factory you gave below (thanks!) we put the application
back under the load test and saw minimal improvements (like 1% response
time).
I then instrumented the factory with a system.out on finalize and noticed
that a factory instance is created for each call to getInitialContext() - is
this the way that WLS/J2EE works? I would have hoped that factories were
shared or something. What we did see is that for one user request a number
(sometimes 5!) ICs were being created ;-( Obviously the lookup cache is a
class instance and shared across the lot.
So then I started to think about pre-creating ICs and haveing a pool for the
default ones (environment specifies URL and no security details or the
like). Trouble is how to implement such when you cannot change the client
code to call a factory return method (such as returnToPool()).
Any ideas would be appreciated
"Dimitri I. Rakitine" <[email protected]> wrote in message
news:[email protected]...
I've ran into this problem while porting 5.1 application (JNDI lookups
were
super-cheap) to 6.1 (where they are not so cheap due to
serialization/deserialization)
and did this test to see if this indeed was the problem. As you saw I
didn't bother to
cache InitialContext's - I just cached JNDI lookups and that resulted in
very significant
performance improvements.
Which application are you testing it with?
Graham <[email protected]> wrote:
Dimitri,
We did this but did not see that much improvement over the default way -
we
are using 6.1 sp2.
We put some messages in our factory and found that the client code often
created over 4 ICs for one user click - aaggghhhh!! As I say we cannot
change their code but if we could take the time to create an IC away
from
the online response we feel we would save some time.
We also observed a new instance of the IC factory being created every
time a
new IC was created - is this what you would expect?
I think this is what NamingManager.getInitialContext() is supposed to do.
Cheers
Ed
"Dimitri I. Rakitine" <[email protected]> wrote in message
news:[email protected]...
Caching InitialContext's will probably not quite solve the problem,
because lookup()'s are expensive (in 6.x), so, caching lookup results
will result in performance improvements.
If you cannot change the 3'rd party code and all it does is:
... DataSource ds = (DataSource)new InitialContext().lookup(".....");
or similar, you can add caching by implementing your own InitialContext
factory,
for example: (extremely simplistic)
Startup class :
System.setProperty("java.naming.factory.initial",
"myjndi.InitialContextFactory");
where
myjndi.InitialContextFactory is :
public class InitialContextFactory implements
javax.naming.spi.InitialContextFactory {
public Context getInitialContext(Hashtable env) throws
NamingException
Context ctx = new
weblogic.jndi.WLInitialContextFactory().getInitialContext(env);
return
(Context)Proxy.newProxyInstance(ctx.getClass().getClassLoader(),
new Class[]
{ Context.class },
new
ContextHandler(ctx));
and myjndi.ContextHandler is:
public class ContextHandler implements InvocationHandler {
Context ctx;
static Hashtable cache = new Hashtable();
public ContextHandler(Context ctx) {
this.ctx = ctx;
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
try {
Object retVal;
if("lookup".equals(method.getName()) && args[0] instanceof
String) {
retVal = cache.get(args[0]);
if(retVal == null) {
retVal = method.invoke(ctx, args);
cache.put(args[0], retVal);
} else {
retVal = method.invoke(ctx, args);
return retVal;
} catch(InvocationTargetException oops) {
throw oops.getTargetException();
Ed <[email protected]> wrote:
Adarsh,
We agree it is a brilliant idea - now just to work out how to do it.
As you cannot always guarantee to be able to change the client code
you cannot use normal pooling techniques:
getObjectFromPool()
// do work
returnObjectToPool()
So, the client code needs an InitialContext. We can put in our own
Factory and intercept the getInitialContext() calls. This method
must
return class javax.naming.Context - therefore the only way I can see
to spot when the class is dereferenced is to extend the class and add
a finalize() method that notifies the factory.
The trouble I believe is that the class cannot be "rescued" in the
finalize() method (i.e. "I'm dying - take me back" ;-). If it simply
told the factory to add another one to its pool this would mean that
the new IC create "hit" would be in garbage collection (i.e. the
users
will pay somewhere along the line) - is this correct?
Anyone any ideas on a solution? I have discovered out code create
HUNDREDS of contexts in an hour and discards them very quickly. Be
nice to be able to cache them!
Cheers
Ed
"Adarsh Dattani" <[email protected]> wrote in message
news:<[email protected]>...
Ed,
This a brilliant idea. We are planning something similar too. We
first
want to create a pool of LDAP connections as apps make extensive
calls
to
LDAP. Did you check-out the object pooling api at Jakarta Commons.
It
deserves a close look.
http://jakarta.apache.org/commons/pool/index.html
Thanks,
Adarsh
"Ed" <[email protected]> wrote in message
news:[email protected]...
I have read the posts about caching initial context lookups and
have
implemented the solution and seen some benefits.
I am dealing with a third party application that I cannot change.
When I put my InitialContextFactory in the architecture I also
logged
how many getInitialContext() calls were being made - I was
absolutely
shocked - often 4+ per user transaction. I suspect that the code
gets
one, does a call and dereferences all over the place.
90% of InitialContexts had the same environment passed to the
getIC()
call so it struck me that what I should do is create a pool of IC,
and
in my factory just serve one from the pool.
So, the question is, what is the best way of detecting when the IC
has
been dereferenced so I know I can serve it again from my pool?
I presume this is a generic pool problem when you can't guarantee
that
your client's will be good citizens and call a close() method or
similar.
I've posted here as it is performance related; also, is there any
reason why what I am doing is not a good idea?
Can the client do something with the IC which means it is not
suitable
for use by another client? If so, can I detect this so I may
discard?
As always, many thanks in advance.
Presuming I can get it to work I will post the code so that we can
all
share ;-)
Cheers
Ed
Dimitri
Dimitri -
Setting de-batched message specific message context properties in custom disassembler
I have recently created a custom disassemble component which can handle a message batch. The message batch can contain multiple messages and the custom component during de-batching recognizes this and does appropriate disassembly. All this is working fine.
The issue I have is that in the disassembler in the disassembled message part I copy the base message context, then assign additional properties. This is resulting in the context of the base message getting modified and as a result, all messages come into
BizTalk with the same context (which is wrong) but the correct message data.
So I could trace it to the statement debatchedMessage.Context = pInMsg.Context. It is not the copy but the reference which is being passed which is causing an overwrite and causing me grief.
Anybody else noticed this behavior? or perhaps knows of a fix? or perhaps knows of a method which will allow me to
COPY the message context?
Regards.What you are seeing is the expected behavior. You are correct:
debatchedMessage.Context = pInMsg.Context
merely assigns the context as a reference.
There is no shortcut to copying the context properties as there is in an Orchestration so you have to copy them one by one:
for (int i = 0; i < pInMsg.Context.CountProperties; i++)
string Name
string Namespace;
object PropValue = pInMsg.Context.ReadAt(i, out Name, out Namespace);
if (pInMsg.Context.IsPromoted(Name, Namespace))
outMsg.Context.Promote(Name, Namespace, PropValue);
else
outMsg.Context.Write(Name, Namespace, PropValue); -
Error in JMS receiver adapter: "Error creating initial context with environment"
Hello,
I have some trouble with a JMS receiver adapter (access to JMS-provider with JNDI).
The message in adapter monitoring is:
A channel error occurred. Detailed error (if any) :
com.sap.aii.adapter.jms.api.connector.ConnectorException: Fatal Error looking up connection factoryJMSQueueConnectionFactory, for profile: ConnectionProfile of channel: CC_JMS_RCV_XLIMI00001on node: 503473150 having object id: 5b424f2f79b6350ca636ab35d528cfdd:
ConnectorException: Error creating initial context with environment: java.naming.provider.url=wcsefdev.example.com:9064; java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory; for profile: ConnectionProfile of channel:
CC_JMS_RCV_XLIMI00001on node: 503473150 having object id: 5b424f2f79b6350ca636ab35d528cfdd: javax.naming.NoInitialContextException:
Cannot instantiate class: com.ibm.websphere.naming.WsnInitialContextFactory<br> at com.sap.aii.adapter.jms.core.connector.JndiConnectorImpl.createConnectionFactory
(JndiConnectorImpl.java:152)<br> ....
Message processing failed. Cause:
com.sap.aii.adapter.jms.core.fsm.DFA$InvalidTransitionException: No transition found from state: ERROR, on event: process_commence for DFA: CC_JMS_RCV_XLIMI00001:5b424f2f79b6350ca636ab35d528cfdd
The third party assured me that the specified JNDI parameters are right and everything is configured on their site, so it should work...
Might there be a problem with the JMS drivers?
Regards,
MarcusHi Marcus,
Have a look at below thread
Connecting to PI 7.11 JMS Queue from other PI 7.11 Server -
Error creating initial context with environment
Hi,
Currently we are working on a scenarios, where we need to integrate XI and webmethods using JMS.
It was working fine. But recently they have restarted the webmethods server. After that we re getting an error message like,
In Adapter Monitoring:
Channel error occurred; detailed error description: com.sap.aii.adapter.jms.api.connector.ConnectorException: Error creating initial context with environment: {java.naming.provider.url=server:port, java.naming.factory.initial=com.sap.engine.services.jndi.InitialContextFactoryImpl, java.naming.security.principal=XYZ, java.naming.security.credentials=ABC}for profile: ConnectionProfile of channel: CC_RCV_JMS_INon node: 3010950 having object id: ABCXYZ: NamingException: Error getting the server-side naming service functionality during getInitialContext operation.
at com.sap.aii.adapter.jms.core.connector.JndiConnectorImpl.createInitialContext(JndiConnectorImpl.java:66)
In RWB
MP: Exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: No transition found from state: STARTING, on event: process_commence for DFA: C_RCV_JMS_IN:e4413a5265a436459e271d5e0dd4859b
Can one please tell me what the problem is?
Thanks in advance.
Regards,
Prasad Babu.Hi,
Check this link looks like same problem
Re: file to JMS(for MQ series)
Thanks
Vikranth
Maybe you are looking for
-
Loading of lis extractions into cube
hello everyone, i have extracted say 2lis_11_vasth from r.3 to bw and all the transformations, infopackage and dtp have been done properly, but wen im going to the contents of the cube i see the fields but not the data. before replicating in rsa3 it
-
Deal-breakers for real use of Solaris 11 Express
I run Solaris 10 U9 for my home 12TB NAS box - based on Supermicro H8SSL-i2 motherboard (ServerWorks HT1000 Chipset and Dual-port Broadcom BCM5704C) and their 8-port SATA2 PCI-X card (AOC-SAT2-MV8). It's a great (but aging) platform and a rock solid
-
Performance Issues during Upgrade of EBS from 11.5.10.2 to 12.1.1
Hi, We're upgrading our EBS , from Rel 11.5.10.2 to 12.1.1. We're stuck , while running script ar120bnk.sql (ran more than 20 Hours) : Regarding the tables involved in this Process : select owner , table_name,num_rows,last_analyzed,sample_size from d
-
Error executing Interactive Form
I have an issue when I execute a WD that has an Adobe Document. <br><br> In the first place, the WD works properly in a PRD environment (in a primary and secondary instances). I made some changes to it (added another PDF, similar to the prior one) an
-
Proxy authentication error on Win7
I used Itunes 11.0.2 on win7 until yesterday without problem. Yesterday I changed my proxy password on Windows and Itunes stop working on Internet. Itunes doesn't ask me more Proxy login mask.