Access nested h:dataTable programatically in Java

Hi everyone. I've got an h:dataTable which is nested three levels deep, but also within some other components. Does anyone have a good solution to get a handle on the rowData() of the internally nested tables? Do I need to recursively traverse all of the children searching for a table? It's hard to use UIComponent.findComponent("") because the table ID is dynamically generated... etc.
The first level table is bound to a backing bean where I am attempting to get these references.
Thoughts? Thanks!

Anyway, I did a quick create and test and it just worked..
MyBeanpublic class MyBean {
    private HtmlDataTable parent;
    private HtmlDataTable child;
    private List<MyData> list;
    public MyBean() {
        list = new ArrayList<MyData>();
        list.add(new MyData("parent1", "nested1a", "nested1b", "nested1c"));
        list.add(new MyData("parent2", "nested2a", "nested2b", "nested2c"));
        list.add(new MyData("parent3", "nested3a", "nested3b", "nested3c"));
    public void submit() {
        System.out.println(child.getRowData());
    public HtmlDataTable getParent() {
        return parent;
    public HtmlDataTable getChild() {
        return child;
    public List<MyData> getList() {
        return list;
    public void setParent(HtmlDataTable parent) {
        this.parent = parent;
    public void setChild(HtmlDataTable child) {
        this.child = child;
    public void setList(List<MyData> list) {
        this.list = list;
}MyDatapublic class MyData {
    private String value;
    private List<MyData> list;
    public MyData() {
    public MyData(String value) {
        this.value = value;
    public MyData(String value, String... nestedValues) {
        this(value);
        this.list = new ArrayList<MyData>();
        for (String nestedValue : nestedValues) {
            this.list.add(new MyData(nestedValue));
    public String getValue() {
        return value;
    public List<MyData> getList() {
        return list;
    public void setValue(String value) {
        this.value = value;
    public void setList(List<MyData> list) {
        this.list = list;
    public String toString() {
        return value;
}JSF<h:form>
    <h:dataTable binding="#{myBean.parent}" value="#{myBean.list}" var="parentItem">
        <h:column>
            <h:dataTable binding="#{myBean.child}" value="#{parentItem.list}" var="childItem">
                <h:column>
                    <h:commandButton value="#{childItem.value}" action="#{myBean.submit}" />
                </h:column>
            </h:dataTable>
        </h:column>
    </h:dataTable>
</h:form>

Similar Messages

  • Accessing Exchange Profile Parameters programatically (using Java/ ABAP)

    Hi All,
    Exchange Profile parameters can be accessed using the URL http://<server>:<port>/exchangeProfile
    Does anyone know how to access 'Exchange Profile parameters' programatically. (from java).
    Code snippet for the same would be of great help.
    Regards,
    Siva Maranani

    Hi,
    Is there any way to access exchange profile parameters using Java?
    I need to access exchange profile from an UDF.
    Thanks in advance.
    Pedro Leal

  • Unable to access nested managed bean property in JSF 1.2.9

    In an old version of JSF, namely 1.2-b20-FCS from April/21/2006, I could access nested properties of a managed bean. So I had a managed bean OuterBean, and in JSF I could write
    <h:inputText value="#{outerBean.innerBean1.propertyA"/>
    The Java class OuterBean has a member function
    InnerBean OuterBean.getInnerBean1();
    That is, there is a function getInnerBean1() taking no arguments, and it returns something which in my example above is the class InnerBean.
    Class InnerBean has a member function getPropertyA().
    But in the latest JSF from July/17/2008, this nested stuff is not working.
    Simple access like #{outerBean.propertyA} works, but nested access like #{outerBean.innerBean.propertyA} does not.
    The exception is something like
    org.apache.jasper.el.JspELException: /whatever/mypage.jsp(71,15) '#{outerBean.innerBean.username}' Error reading 'innerBean' on type
    mypackage.OuterBean at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107) at javax.faces.component.UIOutput.getValue(UIOutput.java:184) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:946) at javax.faces.render.Renderer.encodeChildren(Renderer.java:148) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:936) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942) at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:271) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:202) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) atThanks.

    Sorry, it looks fine to me. In my original post, I had the call stack in code and for some reasons the newlines were removed. So let me try again in text, but putting two newlines. Hope it works this time:
    org.apache.jasper.el.JspELException: /whateverr/mypage.jsp(71,15) '#{outerBean.innerBean.property}' Error reading 'innerBean' on type mypackage.OuterBean at
    org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107) at javax.faces.component.UIOutput.getValue(UIOutput.java:184) at
    com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201) at
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284) at
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154) at
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861) at
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:946) at
    javax.faces.render.Renderer.encodeChildren(Renderer.java:148) at
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:936) at
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:942) at
    com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:271) at
    com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:202) at
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) at
    Edited by: sn72 on Sep 21, 2008 10:21 AM
    Edited by: sn72 on Sep 21, 2008 10:22 AM

  • Accessing ABAP Functions in Web Dynpro Java

    Hi,
    I am trynig to do "Accessing ABAP Functions in Web Dynpro Java" this application, (which is the example application which i got from www.sdn.sap.com) but everything is fine no error also while dyploying.
    But it is not dysplaying the first page after i run the application i am getting plain web page ,without any content.
    Can any body help me.
    Regards,
    H.V.Swathi

    k.. now iam getting some error on page.
    I have embeded the two view in to window.
    But now after running the application i am getting connection error
    com.sap.mw.jco.JCO$Exception: (102) RFC_ERROR_COMMUNICATION: Connect to message server host failed Connect_PM TYPE=B MSHOST=jktr3 GROUP=SPACE R3NAME=R32 MSSERV=sapmsR32 PCS=1 ERROR Group SPACE not found TIME Fri Sep 26 15:05:59 2008 RELEASE 700 COMPONENT LG VERSION 5 RC -6 MODULE lgxx.c LINE 4288 DETAIL LgIGroupX COUNTER 1
        at com.sap.mw.jco.MiddlewareJRfc.generateJCoException(MiddlewareJRfc.java:457)
        at com.sap.mw.jco.MiddlewareJRfc$Client.connect(MiddlewareJRfc.java:989)
        at com.sap.mw.jco.JCO$Client.connect(JCO.java:3193)
        at com.sap.dictionary.runtime.mdi.DataProvider.<init>(DataProvider.java:90)
        at com.sap.dictionary.runtime.mdi.DataProvider.<init>(DataProvider.java:122)
        ... 61 more
    Rgards,
    H.V.Swathi

  • Tivoli Access Manager 6.0 with Sun Java System Directory 6.3

    Hi,
    We have been using Tivoli Access Manager 6.0 with Sun Java System Directory 6.3 .
    Using IBM TAM Java API we can administer the user creation but the API provide support only to create user with required attribute as user name, password, description, setAccoutntvalid etc.
    But Sun Java System Directory 6.3 contains the many attributes as just to name a few...
    First Name (givenname), User ID (uid),Password (userPassword), Confirm Password
    E-mail (mail), Telephone Number (telephoneNumber), Country (c),Fax Number (facsimileTelephoneNumber), Locality (l), Organization (o), Organizational Unit (ou), accessHint, accountHint, departmentNumber, description, destinationIndicator, displayName, employeeNumber ETC...
    Now My Issue is if we need to add the values for other attributes as "accessHint" , "employeeNumber" etc, then how can we acheive using IBM TAM Java API or is there any other way.
    Thanks for your kind help...

    Looks like the attribute sunIdentityServerDiscoEntries is defined twice in the schema. Run the following and see where it is defined for the second time.
    # cd /var/opt/SUNWdsee/dsins1/config/schema
    # grep -w sunIdentityServerDiscoEntries *.ldif | grep -iv objectclasses
    Edited by: etst123 on Mar 3, 2009 1:28 PM

  • How to access AM/VO instance from a Java Service class

    Hi,
    I have a Java service class that is loaded by Java ServiceLoader (http://download.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html) at run time, and I need to access database tables inside that service class. So is there any way that I can access AM/VO instances from that Java class in order to read database table? Thanks.
    Regards,
    K Hein

    You can access an application module with the the two methods below:
        YOURAppModule mAM;
        public void setUpAM()
            throws NamingException
            try
                String AMDefName = "YOUR_APP_DEF_NAME";
                Hashtable env = new Hashtable(2);
                env.put(JboContext.INITIAL_CONTEXT_FACTORY, JboContext.JBO_CONTEXT_FACTORY);
                env.put(JboContext.DEPLOY_PLATFORM, JboContext.PLATFORM_LOCAL);
                ApplicationModule am = null;
                InitialContext ic = new InitialContext(env);
                ApplicationModuleHome home = (ApplicationModuleHome) ic.lookup(AMDefName);
                am = home.create();
                // Connect the AM to a database connection
                String jndiDB = "jdbc/HRDS";
                am.getTransaction().connectToDataSource(null, jndiDB, false);
                boolean connected = am.getTransaction().isConnected();
                mAM = (YOURAppModule) am;
            catch (NamingException nex)
                // do some error processing
                throw nex;
            catch (Exception eee)
                // do some error processing
                throw eee;
        public void tearDownAM()
            if (mAM != null)
                if (mAM .getTransaction().isConnected())
                    mAM .getTransaction().disconnect();
                    mAM .remove();
        }You find the YOUR_APP_DEF_NAME in your application module under 'Configurations' -> AppModuleJndiName.
    Make sure you tear down each AM you set up. Otherwise you are running out of resources pretty fast.
    Timo

  • Accessing portal roles in webdynpro for java

    Hi,
    Please let me know how to access portal roles in webdynpro for java.
    Rgds,
    Patana

    Hi ,
    Please use this API to access the portal roles:
    IRoleFactory fact=UMFactory.getRoleFactory();
    Also see this code to get more information of role using code:
    IRoleFactory rolef=UMFactory.getRoleFactory();
    IRoleSearchFilter searchfilterrole= rolef.getRoleSearchFilter();
    ISearchResult searchResult = rolef.searchRoles(searchfilterrole);
    while(searchResult.hasNext())
    String unq=(String) searchResult.next();
    IRole role1=rolef.getRole(unq);
    String roleName = role1.getDisplayName();
    String roleID = role1.getUniqueID();
    // Once you get the informationof role you can use it in your application as per your requirement.
    Also please note that:
    You should add "com.sap.security.api.jar" to your project`s java build path for getting the Portal Security API's.
    I hope this solves the problem. Please revert back incase you need any further informationon this.
    Thanks and Regards,
    Pravesh

  • Accessing nested child in model to populate datafield in datagrid.

    I am using Rails + Flex and I have problems to access nested
    xml in a datagrid.datafield.
    I reproduce this in a simple mxml sample:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml"
    layout="absolute" width="954">
    <mx:Model id="md">
    <root>
    <e1>el1</e1>
    <e2>el2</e2>
    <child>
    <c1>c1</c1>
    <c2>c2</c2>
    </child>
    <e3>el3</e3>
    </root>
    </mx:Model>
    <mx:DataGrid id="myGrid"
    dataProvider="{md}" >
    <mx:columns>
    <mx:DataGridColumn dataField="e1"/>
    <mx:DataGridColumn dataField="e2"/>
    <mx:DataGridColumn dataField="child"/>
    <mx:DataGridColumn dataField="child.c1"/>
    <mx:DataGridColumn dataField="e3"/>
    </mx:columns>
    </mx:DataGrid>
    </mx:Application>
    Basically, at runtime the content of 3rd column is object
    (alright) and the 4th column is empty whereas it should be "c1".
    Am I doing something obviously wrong ?
    Thanks for any help.
    Romain.

    http://www.adobe.com/devnet/flex/articles/e4x_03.html
    http://www.adobe.com/devnet/flex/articles/e4x_04.html
    you can use the labelfunction

  • Accessing managed-beans property from simple java class

    I have managed bean that is registered in faces-config.xml:
    <managed-bean>
    <managed-bean-name>documentReportsBean</managed-bean-name>
    <managed-bean-class>[myApp].beans.DocumentReportsBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    I want to access property of documentReportsBean from other java class without registering managed-property in faces-config. How can I do that?

    Thank you, what I needed was someone saying the right word. "ValueBinding" in this case.. :)
    Two lines:
    ValueBinding vb = FacesContext.getCurrentInstance().getApplication().createValueBinding("#{documentReportsBean}");
    DocumentReportsBean pbean = (DocumentReportsBean) vb.getValue(FacesContext.getCurrentInstance());
    gives my full control. Nice

  • Exist DataTable Type in Java?

    Hi, I'm new in Java Programming. In VB.Net I like to manipulate SQL Queries in a DataTable and later post it in a DataGridView. In VB exist a type called DataTable;
    Dim dt as DataTable
    I saw the JTable, but, that is like the DataGridView. I'm guessing if there is one DataTable type in Java?
    Thanks in advanced for any help....
    _e                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Thanks! that's pretty much near of what I want. In VB the approach to create a data table and manipulate the data, like, add rows, add columns, etc... is more simple than java.
    _e                                                                                                                                                                                                                                                                                                                                                                           

  • Accessing custom Portal service from a java application

    We have a custom portal service that connects to BW using xmla. How do you access this portal service from a java application. Not from web dynpro, jsp or servlet but from the java code.
    Can we use the INITIAL_CONTEXT_FACTORY to get access to the portal service.
    Thank You
    D.K

    Now I tried the following:
    I've added the prtapi.jar and the service's jar to the additional-lib folder and added the appropriate entries to library.txt and reference.txt.
    Now I can obtain now the PortalRuntime, but this is not initialized.
    Has anybody a solution for this problem? Help would be high appreciated!
    Regards,
    Matthias

  • Accessing nested UIComponents

    The aim of the script is to be able to access component's
    chldren, and their children, and their children, etc... by their
    index.
    I've tried the following:
    // script
    public function deployNesting():void {
    var container:Canvas= new Canvas();
    var chldA:Canvas = new Canvas();
    var chldB:Canvas = new Canvas();
    var chldC:Canvas = new Canvas();
    this.addChild(this.container);
    this.container.addChild(chldA);
    this.container.addChild(chldB);
    this.container.addChild(chldC);
    return;
    public function accessNesting():void {
    trace(this.childAt(0).childAt(0))
    // error 1119*
    trace(this.childAt(0).numChildren)
    // error 1119*
    return;
    *1119 : Access of possibly undefined property numChildren
    through a reference with static type
    flash.display:DisplayObject.
    I'm aware that such nesting is not usually a best practice,
    but in some cases it is required, and I would appreciate an advice
    on this issue.
    a.neko

    Well... It's time to assume the therapeutical values of this
    forum in my particular case : ) One more time, just after recurring
    to all posiible ways to solve it, and afterwards posting a topic
    here, I change my approach and find the solution...
    In this case it is required to cast the return of all the
    getChildAt() in the nesting structure, except the last one.
    You can access a nested child to add a new child to it's
    display list as follows:
    Canvas(this.getChildAt(0)).addChild(chldC);
    Accessing a deeply nested child's name property looks as
    follows:
    Canvas((Canvas(this.getChildAt(0))).getChildAt(0)).getChildAt(0).name;
    etc...
    Somewhat complicated, but solves the problem of accessing
    nested children when, for instance, the variables used to create
    them are gone, or to freely iterate through nested display lists...
    (Verified with Flex 2.0 Builder mx.* components, but I
    suppose it works also for flash.display.* objects.)
    a.neko

  • How to access JDBC Resource registered in Sun Java System App Server ?

    I want to create a stand-alone JDBC application with Java SE using Swing technologies and JNDI technology. The purpose of using JNDI technology is to avoid change of Java Source Code every time I move the database to different location. This Java application will be used in a standalone PC installed with Windows XP Professional with no LAN / WAN connection. Of course, Internet connection is available with the PC.
    I use JavaDB to store the data tables and the location of the database is D:\E-DRIVE\SAPDEV. Tomorrow, if I move this database to C:\SAPDEV or any network drive, I do not want to change the Java Source code. I want to use JNDI which, if I am not wrong, helps developers to avoid manual change of Java source code whenever the database location is changed. Changes have to be made only in the JNDI Name which contains all relevant information about the database in order to get connection no matter where the database SAPDEV is stored; it can be placed under D:\E-DRIVE directory or C:\ directory of the hard disk. To implement my intention, I started developing Java application as per the steps mentioned below:
    Step 1:
    To proceed, first, I sought the help of Sun Java System Application Server Admin Console. I created JNDI object for Connection Pool using the menu path Common Tasks->Resources->JDBC->Connection Pools.
    JNDI Name : ABAPRPY
    Resource Type : javax.sql.DataSource
    Datasource class : org.apache.derby.jdbc.ClientDataSource
    Description : ABAP Program Repository
    The Connection Pool creation has options for General, Advanced and Additional Settings tabs and I made all the settings relevant to the database I created in D:\E-DRIVE\SAPDEV.
    To confirm whether the above settings are correct, I pressed the Ping push button which is available in the General tab of the connection pool creation screen. The system responded with the message Ping Succeeded.
    Step 2:
    I created a JDBC Resource using the menu path Common Tasks->Resources->JDBC->JDBC Resources.
    JNDI Name : jdbc/SAPDEV
    Pool Name : ABAPRPY
    Description : Database Connection for SAPDEV database
    Status : Enabled
    I can see all the above settings recorded in the domain.xml which is placed in the folder
    C:\Sun\AppServer\domains\domain1\config
    Step 3:
    I have made sure that Sun Java System Application Server is up and running in the background with JavaDB server. I created a Java Program making sure the following JAR files are included in the classpath:
    appserv-admin.jar
    appserv-ee.jar
    appserv-rt.jar
    javaee.jar
    fscontext.jar
    Plus, the lib directory of JDK 1.6 & C:\Sun\AppServer\domains\domain1\config
    Source code of the program is as follows: I used NetBeans IDE to create my project file.
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.naming.*;
    import javax.activation.DataSource;
    public class JNDILookup {
    public static void main(String[] args) {
    try {
    InitialContext initCtx = new InitialContext();
    DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/sapdev>");
    } catch (NamingException ex) {
    Logger.getLogger(JNDILookup.class.getName()).log(Level.SEVERE, null, ex);
    When I attempted to compile the above program in NetBeans IDE ,no compilation error reported. But while executing the program, I got the following run-time error message:
    SEVERE: null
    javax.naming.NameNotFoundException: No object bound for java:comp/env/jdbc/sapdev> [Root exception is java.lang.NullPointerException]
    at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:224)
    at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:396)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at SAPConnect.JNDILookup.main(JNDILookup.java:21)
    Caused by: java.lang.NullPointerException
    at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:173)
    ... 3 more
    Now, I want to come out of this situation; at the same time, I want to preserve the settings I have made in the Sun Java System Application Server Admin Console. That is, I want to programmatically access the data source using Connection Pool created in Sun Java System Application Server Admin Console.
    I request dear forum members to provide me an appropriate solution.
    Thanks and regards,
    K. Rangarajan.

    jay44 wrote:
    Bare in mind I am attempting the context.lookup() from inside the container (my code is in a session bean). I have accessed the server and have my bean "say hello" first to verify the bean works OK, then I call a method with this rather standard code:
    String jndiDataSourceName ="Second_EJB_Module_DataBase";
    Logger.getLogger(DynamicPU.class.getName()).log(Level.INFO,"Programatically acquiring JNDI DataDource: "+ jndiDataSourceName);
    InitialContext ctx;
    try {
    ctx = new InitialContext();
    ds =(DataSource)ctx.lookup("java:comp/env/jdbc/"+jndiDataSourceName);
    } catch (NamingException ex) {
    Logger.getLogger(DynamicPU.class.getName()).log(Level.SEVERE, null, ex);
    return "Exception generated trying to preform JDBC DataSource lookup. \n"+ex.toString();
    But when I run the code the server log shows the initial context is created Ok, but an exception is thrown becasue the resource name is not found:
    (and i have tried vriations of ctx.lookup("jdbc/"+jndiDataSourceName) etc etc
    You are fine here. It works in container because the InitialContext properties have been supplied already. That was the link I forwarded earlier. The InitialContext you create locally needs to locate the container JNDI. That is what the properties specify.
    Where I am confused is where you indicate the stack below is from the server log. So, you initiate a standalone (java main method) application, create an InitialContext, and you see the results in your app server log?
    LDR5010: All ejb(s) of [EJB_Module_1] loaded successfully!
    Programatically acquiring JNDI DataDource: Second_EJB_Module_DataBase
    The log message is null.
    javax.naming.NameNotFoundException: Second_EJB_Module_DataBase not found
    at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
    at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)
    at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:192)...
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
    This is strange since I can see this resource (a JDBC connection named Second_EJB_Module_DataBase) is configured on the server from the server's admin console.
    That is why you can obtain a lookup from within the container (app server).
    For this lookup to work it may be that one must map the name inside an ejb-jar.xml deployed with the application, but I have also read some resources like jdbc connection should have a default name. Does anyone know if my lookup() should work without using an ejb-jar.xml mfile to explcitly map the reource for my application?
    Both EBJ's and data sources can be referenced via JNDI. It's a remote lookup (that is normally optimized if it is running in the same JVM). You should not have any dependencies on a JDBC data source being set-up on ejb-jar.xml. That file can of course impact your EJB's. However, data sources are normally set-up on a container-specific basis (e.g., you probably did it through a console, but there is a spec somewhere about how to set up a data source via a resource the app server looks for; it varies from app server to app server). However, once you have that container-specific data source set-up, JNDI operates vendor-neutral. You should be able to take the code above and move it to JBoss or Weblogic or Tomcat or whatever (this is an ideal, in practice, the vendors sometimes put a data source in a name you would not expect, but again, you can use their JMX console to see what the JNDI name is).
    (As I stated above if I have to use a deployment discriptor to get at this JNDI datasource, then solution is not "programmatic" as newly configured datasources could not be accessed without redeploying the entire application).
    As JSchell alluded to, you will always have at least something vendor-specific. JNDI itself (the code you wrote) is totally portable. However, you have to set the various JNDI environment properties to a given vendor's spec. Ideally, you should not need a vendor's actual InitialContext application, but it's a possibility. Once you can safely cast to Context, you should be vendor-neutral (if not, demand your money back).
    So that is exactly where I am stuck, trying to get the lookup to work and wondering if it should work without and xml file mapping the resource for my app.
    What we ended up doing for standalone was to provide our own JNDI. If you look at the open source project JOTM, there are examples on how to use that with XBean (if integrating with Spring, as we did), you can easily set up a data source that runs standalone exactly as you get in the container. Another benefit is you get full JTA/JTS support and the ability to run XA transactions. (This might all be alphabet soup, but the app server gives it to you, and this is the way we ended up doing the same: JNDI + JTA + JTS + XA). It ends up the same application code uses a "vanilla" InitialContext and all we have to do is write one or two xml files (one for our app server, a couple for JOTM), and our actual code works the same.
    I still think you have a shot at getting to the container's JNDI, just not using their full-blown app server JAR.
    I think there must be a simple way to do this with an ejb-jar.xml, I am no expert in JNDI, I could be missing something simple, I will keep at it and post an answer here if I come up with it.
    Thanks, jayIt is simple to code. Getting it to integrate with your app server, yes, that can be challenging. But it has nothing to do with EJB's. Write a simple test. Using nothing but DataSource and InitialContext. Let us know where you get stuck.
    - Saish

  • Unable to access Custom UDTs returned from a Java Stored Procedure

    Hi,
    I have a UDT in the DB :-
    create type contactrecord as object (
    CN_ID NUMBER(8),
    CN_TITLE VARCHAR2(40),
    CN_FIRST_NAME VARCHAR2(25)
    and this is the corresponding java class ContactDetails.java that maps to this UDT, that I loaded in the Aurora VM.
    package package1;
    mport java.sql.SQLData;
    import java.sql.SQLException;
    import java.sql.SQLInput;
    import java.sql.SQLOutput;
    public class ContactDetails implements SQLData
    private String sql_type;
    private long CN_ID;
    private String CN_TITLE;
    private String CN_FIRST_NAME;
    public String getSQLTypeName() throws SQLException
    return this.sql_type;
    //implementation of readSql
    public void readSQL(SQLInput stream, String typeName) throws SQLException
    sql_type = typeName;
    CN_ID = stream.readLong();
    CN_TITLE = stream.readString();
    CN_FIRST_NAME = stream.readString();
    public void writeSQL(SQLOutput stream) throws SQLException
    stream.writeLong(CN_ID);
    stream.writeString(CN_TITLE);
    stream.writeString(CN_FIRST_NAME);
    //getters and setters for the class vars go here.....
    There is another class A.java that has a java stored procedure/function, which I loaded into the Aurora VM
    Here is the class.
    package package1;
    public class A
    public static ContactDetails returnObject(String name )
         ContactDetails cd = new ContactDetails();
         cd.setCN_ID(1);
    cd.setCN_FIRST_NAME(name);
    return cd;
    Then I declared the call spec for A.returnObject() as
    FUNCTION returnObject(name varchar2) return contactrecord
    AS LANGUAGE JAVA
    NAME 'package1.A.returnObject(java.lang.String) return package1.ContactDetails';
    Then I tried to call the function returnObject through JDBC calls from a class in another VM.
    When I access the object returned by the function, I get a null object.
    Here is the Client code:
    CallableStatement cs = null;
    ResultSet rs = null;
    try
    cs = conn.prepareCall("{ ? = call returnObject(?) }");
    java.util.Map map = conn.getTypeMap();
    map.put("ADMIN.CONTACTRECORD", Class.forName("package1.ContactDetails"));
    conn.setTypeMap(map);
    cs.registerOutParameter(1, OracleTypes.STRUCT, "ADMIN.CONTACTRECORD");
    cs.setString(2, "John Doe" );
    cs.execute();
    ContactDetails cd = (ContactDetails)cs.getObject(1);
    System.out.println("contact first name is:-"+cd.getCN_FIRST_NAME()); //Null Pointer here..cd is null....:(
    if (cs != null) cs.close();
    catch(Exception e)
    e.printStackTrace();
    Although If I try to access the same function from a pl/sql block, I am able
    to access the contactrecord fields.
    What could be wrong ..???
    I could not find any error with the object mapping, as it works perfectly when I interact directly from my VM to the DB,
    without going thru the aurora VM.
    I am using a OCI driver to connect to the DB via JDBC.
    Thanx in advance for any help at all.
    -sk

    Shahid,
    I too have had bad luck in many cases with the automatic translation of Java types to PL/SQL and back. I think the SYS package on the PL/SQL side which handles some of the conversion is DBMS_PICKLER (there are equivalent Java classes which do the same in that world and seem to execute automagically when a conversion is needed). You might want to double-check the data type mappings against the DOC on OTN to make sure they map 1-1. Also make sure the permissions are granted against your objects to whoever is executing them, etc. Very often, I've resorted to passing simple scalar types between the two languages as in some cases the results with complex types are inconsistent.
    Sorry this isn't much help,
    -Dan
    http://www.compuware.com/products/devpartner/db/oracle_debug.htm
    Debug PL/SQL and Java in the Oracle Database

  • Migration MS ACCESS FORMS and Reports to Oracle (Java or Forms or Reports)

    Hello ,
    can someone tell me, how i can migrate a whole MS ACCESS 2000 mdb (with forms and Reports) to Oracle.
    I think i have first migrate the Access DB with the OMWB to Oracle and in the next Step to convert the VBA Code to JAVA or Forms9i.
    BUT Is there a tool available for Migrating VBA code like the OMWB ????

    I don't know if this is an obvious question, but do you have MS Access 2k installed on the machine you are trying to run this from? I'm assuming yes.
    If you do and there is still a problem, you should log a ticket for support who will take your mdb and help out with the issue for you.
    Many thanks
    Barry

Maybe you are looking for

  • Trying to understand the PAUSE statement

    I am trying to use the following code: SET SERVEROUTPUT ON VERIFY OFF ACCEPT i_name PROMPT 'Enter your name: ' DECLARE      v_name VARCHAR2(30) := '&i_name'; BEGIN      dbms_output.put_line('This is right before the PAUSE.');      PAUSE 'Adjust paper

  • Recovery with disk

    I bought my HP desk top last year, It stopped working a few weeks ago.  I called HP and ordered a recovery package. I got 4 disks, 3 for recovery.  I put first one in and booted, and then all three disk in one by one as requested.  (Everything seems

  • 802.1x eap-tls machine + user authentication (wired)

    Hi everybody, right now we try to authenticate the machines and users which are plugged to our switches over 802.1X eap-tls. Works just fine with windows. You plug a windows laptop to a switchport and machine authenticates over eap-tls with computer

  • Clearing Status in Tcode-FPL9

    Hi, Requirement: When I view a contract account using FPL9 I am want to see the clearing status in left most column as it appears in FICO - open, cleared ect I have made necessary configuration in Tcode FQKPM. Please suggest.

  • Why is adobe flash player not supported?

    Why is adobe flash player not supported?