Dynamic configuration of connection JNDI name in adapter service
I have a requirement to connect to multiple E-Business Suite instances and databases based on data in the message. I've created some adapter services, and it seems that the way each adapter service decides which instance to connect with is in the WSDL of that service:
<service name="RaiseEvent">
<port name="RaiseEvent_pt" binding="tns:RaiseEvent_binding">
<jca:address location="eis/Apps/VIS03_LNAX30B"/>
</port>
</service>
That snippet is from an Oracle Apps Adapter service, but there's similar code in the WSDL for database adapter services as well. The "eis/Apps/VIS03_LNAX30B" value is the name of the connection factory set up in my OC4J instance administration, specifying the database/EBS instance to use. Manually changing that value at design-time and redeploy works to connect to a different instance.
Is there any way to make that "jca:address location" attribute be a value that I pass into the adapter service, instead of hardcoding it into the WSDL?
Thanks,
Skip
I have tried to assign values to the OutBoundDBHeaderType to try invoke another JNDI, but does not seem to work.
The setup that I used was
Have 2 databases A and B.
Have the same procedure setup in both the databases.
Have 2 JNDIs setup to point to the databases A and B named as eis/DB/A and eis/DB/B.
Initially created a DB Adapter pointing to JNDI - A.
Created a variable of the OutboundDBHeaderType message type.
Tried to assign the dataSourceName as eis/DB/B in the BPEL process.
This doe not seem to change the JNDI, the calls continue going to A.
Similar Messages
-
Need help to Configure FTPS connection for File Sender Adapter
Hi,
I want to Configure, FTPS connection (Secured Connection) for File Sender Adapter. Could anyone please guide me, what Information I require to configure. I just want to know what Information should I request the team inorder the configure FTPS so that it can be deployed properly.
I have checked with [SAP Help Link|http://help.sap.com/saphelp_nw04/helpdata/EN/e3/94007075cae04f930cc4c034e411e1/content.htm] and while configuring the communication channel found that I need Keystore and the X.509 Certificate and Private Key. which needs to be deployed on the J2EE server by using the Visual Administrator.
Is there anything else, I need to configure.
Any help would be appreciated in this regard.
Thanks & Regards,
Varun.KThe basic things are Certificate/Keys which you already know. Usually it is enough for running a sceanrio.
However, if you have additional requirements, like FTPS for "Connection Security" for encryption, then you may need additional details like commands. Rest all settings are same as FTP.
Regards,
Prateek -
Problem:obtaing file name using Dynamic configuration of file adapter
hi all
I am using Dynamic configuration for getting file name.
I am getting Dynamic configuration in SXMB_MONI containg file name, but payload is empty unlike file i am sending.Hi All,
Basically my requirement to get Filename in idoc segments in order to validate the posting at month end.
Its an File to idoc scenario- GL Posting.
Please check attached UDF and it gives error. Kindly help. Thanks -
How to externalize JNDI name (setting JNDI name dynamically)
Hi,
In adapters such as ftp, database, we have to specify the jndi name. This binds the adapter to a particular jndi name. While this is certainly better than binding the adapter directly to the physical resource, I was wondering if it is possible to have even more flexibililty- setting the jndi name dynamically.
Basically my requirement is to develop a web service that reads a file from a FTP location. I know I can externalize the filename and directory, but I am wondering how to set the ftp location dynamically.
http://darwin-it.blogspot.com/2008/03/configuration-of-ftp-synchronous-get.html provides the answer if I wish to set the hostname, portname, user id and password.
But I want to setup the FTP adapter in AS, and then use that JNDI name in my service. Is it possible...I am using SOA 10.1.3.3
Regards,
AmitI was able to access the files. Thanks.
The example shows how to use the header properties in file adapter, and it sets the filename and directory elements dynamically....this I already knew.
<copy>
<from variable="inputVariable" part="payload"
query="/client:PassFilePropertiesDynamicallyProcessRequest/client:FileName"/>
<to variable="outHeader" part="outboundHeader"
query="/ns2:OutboundFileHeaderType/ns2:fileName"/>
</copy>
<copy>
<from variable="inputVariable" part="payload"
query="/client:PassFilePropertiesDynamicallyProcessRequest/client:Location"/>
<to variable="outHeader" part="outboundHeader"
query="/ns2:OutboundFileHeaderType/ns2:directory"/>
</copy>
What I want to know is, what is the element to be added in the ftpAdapterOutboundHeader.wsdl that denotes the FTP Location (which is different from the directory).
I guess your next update which would talk about FTP adapter, would clarify things.
Thanks for your replies,
Amit -
Dynamic jndi-name in weblogic-ejb-jar.xml
Is there a way to create dynamic (i.e. runtime) jndi-names for EJBs instead of
(or in addition to) "hard coding" them in the weblogic-ejb-jar.xml file? What
I'm trying to do is have one WebLogic instance (JVM) host multiple environments
(our Beta and Training environments) and I simply want to deploy the same .ear
file twice but have each environment (application - .ear) reference a different
database schema (jdbc connection pool). I have everything working just fine for
this scenario except when I define jndi-names for our ejbs. The problem is that
I am really deploying the same ejbs (jndi-names and actually code base) in each
applicatoin instance and I get an exception when the WebLogic is trying to deploy
the second application (.ear) because the jndi-names in it have already been deployed
by the first application instance. I recieve a jndi error stating that the name
is already deployed.
Or is there a better path to go down for what I am trying to do to have one WebLogic
instance support our beta and training environments? Usually (but not always)
our code base is the for same for both of these environments, I simply need to
have each environment use a different database schema.
ThanksA little birdie tells me that BEA does this very thing. Looking at the
descriptors for WebLogic Portal I see:
<weblogic-enterprise-bean>
<ejb-name>LoaderEJB</ejb-name>
<enable-call-by-reference>True</enable-call-by-reference>
<jndi-name>${APPNAME}.BEA_content.LoaderHome</jndi-name>
</weblogic-enterprise-bean>
Yes, the ${APPNAME} token really is expanded into the J2EE application
name at deployment time!
Sincerely,
Daniel Selman
Bryan Dixon wrote:
Rewriting our build process isn't really much of an option for me. Our current
build process is too complex and time consuming right now to convert to Ant (we
eventually will do this but not for a while). So are there any other ideas that
aren't build related?
Thanks
"Eric Ma" <[email protected]> wrote:
You don't need run-time dynamism in JDNI names and it can't be done anyways.
You
need token substitution in XML configuration files when building the
app. If
you are using Ant for building, then it is a breeze. If not, first convert
your
build process to use Ant.
Also, a single WLS instance hosting multiple environments sounds really
INTRIGUING
to me.
Eric Ma
"Bryan Dixon" <[email protected]> wrote:
Is there a way to create dynamic (i.e. runtime) jndi-names for EJBsinstead
of
(or in addition to) "hard coding" them in the weblogic-ejb-jar.xml file?
What
I'm trying to do is have one WebLogic instance (JVM) host multiple environments
(our Beta and Training environments) and I simply want to deploy the
same .ear
file twice but have each environment (application - .ear) referencea
different
database schema (jdbc connection pool). I have everything working just
fine for
this scenario except when I define jndi-names for our ejbs. The problem
is that
I am really deploying the same ejbs (jndi-names and actually code base)
in each
applicatoin instance and I get an exception when the WebLogic is trying
to deploy
the second application (.ear) because the jndi-names in it have already
been deployed
by the first application instance. I recieve a jndi error stating that
the name
is already deployed.
Or is there a better path to go down for what I am trying to do to have
one WebLogic
instance support our beta and training environments? Usually (but not
always)
our code base is the for same for both of these environments, I simply
need to
have each environment use a different database schema.
Thanks -
Dynamic configuration bean in JMS Adapter
Hello Experts,
My scenario is JMS(Active MQ) to File.Its just Passthrough scenario and no mapping involved.
Filename will be coming in one of the JMS Property (say businessId) and I need to set this filename to file adapter.
I have refered the stefan's blog and used the Dynamic configuration bean module in sender JMS adapter.
getFilename key.1 write http://sap.com/xi/System/JMS DCJMSMessageProperty4
getFilename value.1 module.filename
setFilename key.1 read http://sap.com/xi/System/File FileName
setFilename value.1 module.filename
But required filename is not populated in the target File.Any other configuration is missing here?Hi Karthiga
Did you set the ASMA properties in both your sender JMS channel and receiver File channel?
For the JMS adapter, as shown below, you will need to enter the DCJMSMessageProperty4 into the table
Configuring the Sender JMS Adapter - Configuring the JMS Adapter in the Integration Directory/PCK - SAP Library
If you want to set additional JMS message attributes, select Specify Additional JMS Message Properties (Maximum of 10).
In the table, enter the names of the JMS message properties whose values are to be included in the message header of the PI message.
The technical names of the additional attributes are DCJMSMessageProperty0, DCJMSMessageProperty1, ..., DCJMSMessageProperty9.
For the File adapter, you need to check the ASMA FileName attribute.
Once you have this configured, in your message, you should be able to see that the value is in the DynamicConfiguration section of the SOAP header.
Rgds
Eng Swee -
Doubt om Dynamic Configuration of receiver file
Hello ,
for Acheiving the Dynamic configuration of receiver file name ,adapter specific message attribute is used...But how to suppress the name of file in the content of the Received file...
Is my question correct..do we get the file name in content of the receiver file,while using the Adapter specifc message attribute.
And another question ,in the Variable substitution ...do we get the above problem,then how to tackle the situation to suprress the file name in the payload of receiver file.HI,
You can handle the dynamic file name via Dynamic configuration or with the help of Variable Substitution.
Please refer
have a look
Dynamic File Name using XI 3.0 SP12 Part - I --> Dynamic File Name using XI 3.0 SP12 Part u2013 I
Dynamic file name(XSLT Mapping with Java Enhancement) using XI 3.0 SP12 Part -II --> Dynamic file name(XSLT Mapping with Java Enhancement) using XI 3.0 SP12 Part -II
With Variable Substituion, you may need to supress the filename
Dynamic File Name - Suppress the Substitue varible
Let me know if you need anymore info.
Thanks
Swarup -
Problem with dynamic configuration in PI 7.0 (SP 21)
We're trying to set a dynamically configurable parameter (UrlParam in plain http adapter) in a java mapping and when calling, via proxy, getting the following error returned<br />
<p />
<br />
<?xml version="1.0" encoding="utf-8" ?><br />
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"><br />
- <asx:values><br />
<SYSTEMFAULT href="#o284" /><br />
</asx:values><br />
- <asx:heap xmlns:xsd="http://www.w3.org/2001/XMLSchema"<br />
xmlns:abap="http://www.sap.com/abapxml/types/built-in" <br />
xmlns:cls="http://www.sap.com/abapxml/classes/global" <br />
xmlns:dic="http://www.sap.com/abapxml/types/dictionary"><br />
<br />
- <cls:CX_AI_SYSTEM_FAULT id="o284"><br />
- <CX_ROOT><br />
<TEXTID>F63AFF63DBE4BB4786A7F52CC4167145</TEXTID><br />
<PREVIOUS /><br />
<KERNEL_ERRID /><br />
- <INTERNAL_SOURCE_POS><br />
<PROGID>95</PROGID><br />
<CONTID>3304</CONTID><br />
</INTERNAL_SOURCE_POS><br />
</CX_ROOT><br />
<CX_STATIC_CHECK /><br />
- <CX_AI_SYSTEM_FAULT><br />
<CODECONTEXT /><br />
<CODE>PLAINHTTP_ADAPTER.ATTRIBUTE_MISSING_PARAMS</CODE><br />
<ERRORTEXT /><br />
<LANGUAGE /><br />
</CX_AI_SYSTEM_FAULT><br />
</cls:CX_AI_SYSTEM_FAULT><br />
</asx:heap><br />
</asx:abap> <br />
<p />
<br />
The java code in the mapping is as follows:<br />
<br />
The java code in the mapping is as follows:<br />
/*<br />
Created on 07-Jun-2010<br />
*<br />
To change the template for this generated file go to<br />
Window>Preferences>Java>Code Generation>Code and Comments<br />
*/<br />
package uk.gov.communities.finance; <br />
<br />
import java.io.InputStream;<br />
import java.io.OutputStream;<br />
import java.util.Map;<br />
<br />
import com.sap.aii.mapping.api.DynamicConfiguration;<br />
import com.sap.aii.mapping.api.DynamicConfigurationKey;<br />
import com.sap.aii.mapping.api.StreamTransformation;<br />
import com.sap.aii.mapping.api.StreamTransformationException; <br />
<br />
/**<br />
@author Mark<br />
*<br />
To change the template for this generated type comment go to<br />
Window>Preferences>Java>Code Generation>Code and Comments<br />
*/ <br />
<br />
public class PaymentGatewayRequestMap implements StreamTransformation {<br />
/** This Map parameter is for the Method setParameter() */<br />
Map param=null;<br />
/** This method should be used while the Class implements<br />
StreamTransformation interface<br />
*<br />
@param param - A Map object<br />
*/<br />
public void setParameter(Map param){<br />
this.param=param;<br />
}<br />
<br />
/**<br />
This method will be called by XI to execute Java Mapping. <br />
@param in - The InputStream which has the source message from CRM <br />
@param out - The OutputStream which has the target message to ProFinance <br />
*/ <br />
public void execute (InputStream in, OutputStream out) throws
StreamTransformationException { <br />
String urlParamOne = null; <br />
try{ <br />
DynamicConfiguration dynCon = (DynamicConfiguration)param.get("DynamicConfiguration"); <br />
DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","myValueHere"); <br />
String response = ""; out.write(response.getBytes()); <br />
} <br />
catch(Exception e){<br />
throw new RuntimeException(e.getMessage());<br />
}<br />
}<br />
}<br />
<p />
<p />
<p />
Looking at the call in SXMB_MONI there's no sign of the dynamic configuration stage anywhere but we are seeing the following in the response message:
<p />
<br />
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><br />
-< !-- Call Adapter <br />
--><br />
- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1"><br />
<SAP:Category>XIAdapter</SAP:Category><br />
<SAP:Code area="PLAINHTTP_ADAPTER">ATTRIBUTE_MISSING_PARAMS</SAP:Code><br />
<SAP:P1 /><br />
<SAP:P2 /><br />
<SAP:P3 /><br />
<SAP:P4 /><br />
<SAP:AdditionalText /><br />
<SAP:ApplicationFaultMessage namespace="" /><br />
<SAP:Stack>Dynamic Header - Missing Message Attributes: Fields/Parameters</SAP:Stack><br />
<SAP:Retry>N</SAP:Retry><br />
</SAP:Error><br />
<p />
<br />
Please note, we have set this up on another PI system (7.0 sp 12) and it works as required.
<p />
<br />
Many thanks
<p />
<br />
AndreasHello , let me clarify:
- There's a graphical mapping which has a user defined function with the following code:
DynamicConfigurationKey dynKey =DynamicConfigurationKey.create(
"http://sap.com/xi/XI/System/HTTP",paramName);
DynamicConfiguration dynCon =(DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
dynCon.put(dynKey, paramValue);
return paramValue;
- The above UDF has paramName set to UrlParamOne via a constant and paramValue set a per an element in the incoming structure.
- Incidentally, a Java mapping is then called (although not relevent) to clear the xml produced from the mapping. This is a requirement for our customer who don't want the HTTP body set. The code is as follows:
Created on 07-Jun-2010
To change the template for this generated file go to
Window>Preferences>Java>Code Generation>Code and Comments
package uk.gov.communities.finance;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationException;
@author Mark
To change the template for this generated type comment go to
Window>Preferences>Java>Code Generation>Code and Comments
public class PaymentGatewayRequestMap implements StreamTransformation {
/** This Map parameter is for the Method setParameter() */
Map param=null;
/** This method should be used while the Class implements
StreamTransformation interface
@param param - A Map object
public void setParameter(Map param){
this.param=param;
This method will be called by XI to execute Java Mapping.
@param in - The InputStream which has the source message from CRM
@param out - The OutputStream which has the target message to ProFinance
public void execute(InputStream in, OutputStream out) throws StreamTransformationException {
try{
String response = "";
out.write(response.getBytes());
catch(Exception e){
throw new RuntimeException(e.getMessage());
Many thanks
Andreas -
Variable Substitution and Dynamic Configuration
Hi All,
In Variable Substitution , the name that should be given the the receiver payload should be part of the Source Payload unlike the Dynamic Configuration wherein the file name can be generated dynamically during mapping.
I have the following questions
1.Dont we need to write the UDF for the Variable substitution?
2.Cant we do the Dynamic configuration without writing UDF?If so then how?
3.In Dynamic Configuration the file name is generated dynamically.But where does the file name come from if it is not the part of the source payload?
Thanks in advanceHi Shwetha,
1.Dont we need to write the UDF for the Variable substitution?
No. Here we are accessing the contents of the payload to the target. So no UDF required.
2.Cant we do the Dynamic configuration without writing UDF?If so then how?
Yes and No.
Because we can set only few Dynamic configuration values without UDF.
If both source and target are File, then check ASMA on both sender and receiver. Then u can get the source directory name and source file name for target also without any UDF.Also some other parameters.
3.In Dynamic Configuration the file name is generated dynamically.But where does the file name come from if it is not the part of the source payload?
The file name comes along with the source in the payload as a attribute in header. U can view this in SXMB_MONI, and Dynamic Configuration.
In Dynamic Configuration the file name is generated dynamically.
No the file name is taken as it is from the source, if u want to change dynamically that u have to do in a UDF.
I hope this will clear all doubts,
If nt pl post
Babu -
XSL mapping with Java enhancment PI 7.1 - Dynamic configuration
Scenario - IDOC -> File
XSL Mapping using dynamic configuration to set file name.
1. Ive included
xmlns:javamap="java:packageName.DynamicFunctionClass">
in the XSL header
2.Ive call this method javamap:transform($input, $output)
In the Java code.
1. Package = packageName
2. Class Name = DynamicFunctionClass
3. Class Compiles and I have uploaded into the ESR for a particular scenario. (source and class)
4. extends AbstractTransformation and implements the transform method.
public class DynamicFunctionClass extends AbstractTransformation{ .....
public void transform(TransformationInput arg0, TransformationOutput arg1) throws StreamTransformationException {
ISSUE -
Essentially it looks as though PI cannot see the class file or is not able to reference it. I have created a static method in the class as well to access and this does not work.
TRACE -
Resource not found META-INF/Services/javax.xml.parsers.SAXParserFactory Thrown:
com.sap.aii.ib.server.mapping.execution.MappingClassNotFoundException:Ive stumbled across the fact that JDK 1.5 does not allow for Mapping with Java enchanment it is a feature only in SAPXMLTOOL kit, I shall tick the little box in the Operational mapping ...
-
In JBuilder7,the default JNDI Name of a entity bean(Authors) is
AuthorsRemote (in the webogic-ejb-jar.xml). I configed a Tx DATA source
configuration using this JNDI name.When I deployed the entity bean , the
WLS7.0 reported errors like this:
unable to deploy EJB: Authors from mymod2.jar:
weblogic.ejb20.WLDeploymentException: Unable to bind EJB Home Interface to
the JNDI name: AuthorsRemote. The error was:
javax.naming.NameAlreadyBoundException: AuthorsRemote is already bound;
remaining name ''
If I configed the Tx Data Source with a different JNDI name MyJNDI3 and
deloyed ,I got errors like this:
javax.naming.NameNotFoundException: Unable to resolve 'AuthorsRemote'
Resolved: '' Unresolved:'AuthorsRemote' ; remaining name 'AuthorsRemote'
at
weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.
java:109)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:262)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:229)-- Failed initializing bean access.Hi,
If say, the EJB deploys without error with the jndi name 'AuthorsRemote'
what do you expect when doing a ctx.lookup("AuthorsRemote")
A ejb instance or a datasource instance??
I think the above would validate the error that is thrown.
Vimala
paul wrote:
In JBuilder7,the default JNDI Name of a entity bean(Authors) is
AuthorsRemote (in the webogic-ejb-jar.xml). I configed a Tx DATA source
configuration using this JNDI name.When I deployed the entity bean , the
WLS7.0 reported errors like this:
unable to deploy EJB: Authors from mymod2.jar:
weblogic.ejb20.WLDeploymentException: Unable to bind EJB Home Interface to
the JNDI name: AuthorsRemote. The error was:
javax.naming.NameAlreadyBoundException: AuthorsRemote is already bound;
remaining name ''
If I configed the Tx Data Source with a different JNDI name MyJNDI3 and
deloyed ,I got errors like this:
javax.naming.NameNotFoundException: Unable to resolve 'AuthorsRemote'
Resolved: '' Unresolved:'AuthorsRemote' ; remaining name 'AuthorsRemote'
at
weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.
java:109)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:262)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:229)-- Failed initializing bean access. -
JNDI name for a JMB is not replicatet to other servers in the cluster
Hi,
wl6.1sp7, two server cluster
When I look at the JNDI Tree for a server I can't find JNDI names of JMB's from the other server in the cluster.
I get an exception when trying to send to a destinaton on the other server. (Unable to resolve 'xlink.jms.service.report.biztalk-lab.Report' Resolved: 'xlink.jms.service.report' Unresolved:'biztalk-lab')
Setting are same as explained in this thread...
http://forums.bea.com/bea/thread.jspa?threadID=600003492&tstart=0
And JNDINameReplicated is set to true....
Why is the JNDI names not replicated?
<JMSQueue JNDIName="xlink.jms.service.report.biztalk-lab.Report"
JNDINameReplicated="true" Name="Report" StoreEnabled="default"/>
This is the DD of a JMB:
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>xlink.jms.service.report.biztalk-lab.Report</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>3</max-beans-in-free-pool>
<initial-beans-in-free-pool>1</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>xlink.jms.service.report.biztalk-lab.Report</destination-jndi-name>
<connection-factory-jndi-name>xlink.jms.factory.commerceFactory</connection-factory-jndi-name>
</message-driven-descriptor>
<jndi-name>xlink.jms.service.report.biztalk-lab.Report</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
~b1. yes
<JMSConnectionFactory AllowCloseInOnMessage="false"
DefaultDeliveryMode="Persistent" DefaultPriority="4"
DefaultTimeToLive="0"
JNDIName="xlink.jms.factory.commerceFactory"
MessagesMaximum="10" Name="xlink.jms.factory.commerceFactory"
OverrunPolicy="KeepOld" Targets="bluej,biztalk-lab,devtestCluster"/>
2. No I am just using the jndi name of the queue.
This is an example of how I send a message:
Context ctx = new InitialContext();
QueueConnectionFactory qconFactory;
QueueConnection qcon;
QueueSession qsession;
QueueSender qsender;
Queue queue;
ObjectMessage msg;
qconFactory = (QueueConnectionFactory) ctx.lookup("xlink.jms.factory.commerceFactory");
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (Queue) ctx.lookup("xlink.jms.queue.biztalk-lab.OrdrspImport");
qsender = qsession.createSender(queue);
msg = qsession.createObjectMessage(reportExecutorContainer);
qcon.start();
qsender.send(msg);
qsender.close();
qsession.close();
qcon.close();
3. I don't know those setting (wl 6.1sp7) -
2.3 RC1: PersistenceManagerFactory JNDI name
After deploying kodo.rar from Kodo 2.3 RC1 in JBoss 3.0, my session
bean cannot find the PMF under the name
"java:comp/env/jdo/PersistenceManagerFactory", which I expected from
looking at the sample com.solarmetric.kodo.ee.JDOBean and the JDO
specification, but under the proprietary name "java:/kodo" (which is
to be expected from the entry <attribute
name="JndiName">kodo</attribute> in kodo-service.xml).
Now who is right? Should the JNDI name in kodo-service.xml be changed
or is the sample code wrong?Jakob-
The idea is that the java:comp/env/jdo/PersistenceManagerFactory will be
mapped in your appserver's ejb-specific xml file to the absolute
deployed JNDI name of java:/kodo. This is so your EJB can refer to an
abstract name in the code, and if you want to use another PMF bound
somewhere else, all you would need to do is change the resource mapping.
This is done in the fashion of your application server.
Note that there is nothing preventing you from hard-wiring the JNDI name
"java:/kodo" in your EJB code, but it is considered to be against EJB
best practices.
Finally, the default name of "java:/kodo" is not a very good one, since
it probably shouldn't be top-level, however some application servers
don't support binding into a node level that does not yet exist. Thus,
we needed to shoot for the lowest common denominator when deciding what
name to give it.
In article <[email protected]>, Jakob Spies wrote:
After deploying kodo.rar from Kodo 2.3 RC1 in JBoss 3.0, my session
bean cannot find the PMF under the name
"java:comp/env/jdo/PersistenceManagerFactory", which I expected from
looking at the sample com.solarmetric.kodo.ee.JDOBean and the JDO
specification, but under the proprietary name "java:/kodo" (which is
to be expected from the entry <attribute
name="JndiName">kodo</attribute> in kodo-service.xml).
Now who is right? Should the JNDI name in kodo-service.xml be changed
or is the sample code wrong?
Marc Prud'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com
Kodo Java Data Objects Full featured JDO: eliminate the SQL from your code -
Dynamic JNDI name for database adapter in BPEL
Hi All,
I am having some major issues trying to make the JNDI location for the database adapter dynamic (10.1.3.4). I already went through the followin link, but that didnt work for me: http://www.oracle.com/technology/pub/articles/bpel_cookbook/carey.html
The below example works, but only the first run. Second time around the first runs JNDI value gets retained and connects to that database.
This is what worked atleast the first time.
I parameterized the JNDI with a variable defined in the partnerlink definition in the bpel.xml
In Bpel. xml
<partnerLinkBinding name="updatetbl">
<property name="wsdlLocation">updatetbl.wsdl</property>
<property name="CONN">eis/DB/na</property>
<property name="retryInterval">60</property>
</partnerLinkBinding>
In the updatetbl.wsdl file
<service name="updatetbl">
<port name="updatetbl_pt" binding="tns:updatetbl_binding">
<jca:address location="$CONN"/>
</port>
</service>
At run time I change the partnerlink CONN variable in embedded Java.
try
Element targetAdapterElement =(Element)getVariableData("Invoke_getFromTbl_OutputVariable","getFromTblOutputCollection","/ns2:getFromTblOutputCollection/ns2:getFromTblOutput/ns2:SRC_JNDI");
getLocator().lookupProcess("JndiIssueTest").getDescriptor().getPartnerLinkBindings().getPartnerLinkBinding ("updatetbl").setPropertyValue ("CONN",targetAdapterElement.getTextContent());
("updatetbl").getPropertyValue ("CONN"));
catch(Exception ex)
addAuditTrailEntry("Error is " + ex);
This works fine the first time, but the second time I run it to look at a different CONN value, it somehow still connects using the first runs value!
If I redeploy or clear the WSDL cache, it works. But we plan to run it multiple times from several environment so manually or programatically clearing WSDL is not the right solution.
Can someone tell me what is the standard process of doing this so it works everytime?
Thanks,
ShafShaf,
Please refer the mail thread for details. If you want I can send you(send me your email id) the sample BPEL process which uses Dynamic JNDI.
Re: How to externalize JNDI name (setting JNDI name dynamically)
Thanks,
Sen -
Dynamic JNDI in FTP Adapter | jca.jndi property not picked by Adapter
Hi,
I am trying to pass jndi dynamically to FTP adapter using the steps mentioned in http://blogs.oracle.com/adapters/entry/changing_the_connection_factory_jndi_dynamically_in_ftp_adapter.
I have configured FTP jndi(eis/Ftp/SoaFtpAdapter) at app server.
And included the following property in the invoke activity that calls the FTP adapter
<bpelx:inputProperty name="jca.jndi" variable="jndiLocation"/>
Invoke activity definition looks as following
<invoke name="Invoke1"
partnerLink="FTPFileListAdap" portType="ns3:FileListing_ptt"
operation="FileListing"
inputVariable="Invoke1_FileListing_InputVariable"
outputVariable="Invoke1_FileListing_OutputVariable"
bpelx:invokeAsDetail="no">
<bpelx:inputProperty name="jca.jndi" variable="jndiLocation"/>
<bpelx:toProperties>
<bpelx:toProperty name="jca.ftp.Directory" variable="directoryName"/>
</bpelx:toProperties>
</invoke>FTP Adapter jca configuration is as following
<adapter-config name="FTPFileListAdap" adapter="FTP Adapter" wsdlLocation="FTPFileListAdap.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
<connection-factory location="eis/Ftp/SoaFtpAdapter12" UIincludeWildcard="*.txt"/>
<endpoint-interaction portType="FileListing_ptt" operation="FileListing">
<interaction-spec className="oracle.tip.adapter.ftp.outbound.FTPListInteractionSpec">
<property name="PhysicalDirectory" value="/in/dev"/>
<property name="Recursive" value="true"/>
<property name="IncludeFiles" value=".*\.txt"/>
</interaction-spec>
</endpoint-interaction>
</adapter-config>While calling the BPEL i am passing two parameters
jndiLocation = eis/Ftp/SoaFtpAdapter
and
directoryName = /in/dev
Following is the fault that I am getting while executing the BPEL.
<fault>
<bpelFault>
<faultType>0</faultType>
<bindingFault>
<part name="summary">
<summary>Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'FileListing' failed due to: JCA Binding Component connection issue. JCA Binding Component is unable to create an outbound JCA (CCI) connection. RunTimeConfigFTP:FTPFileListAdap [ FileListing_ptt::FileListing(Empty,filelist) ] : The JCA Binding Component was unable to establish an outbound JCA CCI connection due to the following issue: BINDING.JCA-12510 JCA Resource Adapter location error. Unable to locate the JCA Resource Adapter via .jca binding file element <connection-factory/> The JCA Binding Component is unable to startup the Resource Adapter specified in the <connection-factory/> element: location='eis/Ftp/SoaFtpAdapter12'. The reason for this is most likely that either 1) the Resource Adapters RAR file has not been deployed successfully to the WebLogic Application server or 2) the '<jndi-name>' element in weblogic-ra.xml has not been set to eis/Ftp/SoaFtpAdapter12. In the last case you will have to add a new WebLogic JCA connection factory (deploy a RAR). Please correct this and then restart the Application Server Please make sure that the JCA connection factory and any dependent connection factories have been configured with a sufficient limit for max connections. Please also make sure that the physical connection to the backend EIS is available and the backend itself is accepting connections. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. </summary>
</part>
<part name="detail">
<detail>JCA Resource Adapter location error. Unable to locate the JCA Resource Adapter via .jca binding file element <connection-factory/> The JCA Binding Component is unable to startup the Resource Adapter specified in the <connection-factory/> element: location='eis/Ftp/SoaFtpAdapter12'. The reason for this is most likely that either 1) the Resource Adapters RAR file has not been deployed successfully to the WebLogic Application server or 2) the '<jndi-name>' element in weblogic-ra.xml has not been set to eis/Ftp/SoaFtpAdapter12. In the last case you will have to add a new WebLogic JCA connection factory (deploy a RAR). Please correct this and then restart the Application Server </detail>
</part>
<part name="code">
<code>12510</code>
</part>
</bindingFault>
</bpelFault>
</fault>It seems that FTP Adapter is not picking up the value from jca.jndi property.
How to handle this situation.
Thanks
AjayHi,
Since I am working on BPEL 2.0
Following changes solved my problem.
In the invoke activity, I replaced the following xml tag
<bpelx:inputProperty name="jca.jndi" variable="jndiLocation"/>with following
<bpelx:toProperties>
<bpelx:toProperty name="jca.jndi" variable="jndiLocation"/>
</bpelx:toProperties> And now my invoke activity looks as follow.
<invoke name="Invoke1"
partnerLink="FTPFileListAdap" portType="ns3:FileListing_ptt"
operation="FileListing"
inputVariable="Invoke1_FileListing_InputVariable"
outputVariable="Invoke1_FileListing_OutputVariable"
bpelx:invokeAsDetail="no">
<bpelx:toProperties>
<bpelx:toProperty name="jca.ftp.Directory" variable="directoryName"/>
</bpelx:toProperties>
<bpelx:toProperties>
<bpelx:toProperty name="jca.jndi" variable="jndiLocation"/>
</bpelx:toProperties>
</invoke>Thanks
Ajay
Maybe you are looking for
-
Verizon Customer Service and Samsung Galaxy S III
A little over 3 weeks ago I purchased a Samsung Galaxy III phone from Verizon. The exact store is: 224 North Weber Road, Bolingbrook, IL 60440 (630) 226-4660 When I purchased the phone the person who sold me the phone told me that I had 30 days, If I
-
Substitution for MIRO Business Area for tax line items
Hi All, Our business requirement is updation of BA in tax line items during MIRO transaction. To fulfill this requirement i have written a substitution with user exit. Business user enters BA in bktxt . In user exit iam passing bktxt field to bseg-gs
-
on my g5 fcp aborts capture and i get a dialogue box saying that there is a problem with the tape. i have the same problem with multiple tapes from different sources and 2 cameras. fortunately, i have a macbook pro and am not having any problems capt
-
CLM Importing Master Agreement: Is it possible to import custom collection
Hello, We are looking to migrate some legacy data into CLM using the import master agreement (setup->Import and Export Tools). This approach works fine for all standard data as well as extensions that are single entry fields (not collections). We w
-
Please help.