Sun App Sever 8.1  /  JNDI - datasource lookup problems

I get an error when calling the ctx.lookup function. I have the datasource and the resource set up in the server OK. I can ping successfully and view the table data. I am using NetBeans 4.1 / Sun 8.1
I have been up all night (11pm - 4:30am) trying to figure this out.
    <%
        java.sql.Connection conn = null;
        java.util.Hashtable env = new java.util.Hashtable();
        javax.naming.Context ctx ;
        javax.sql.DataSource cachedDataSource;
        try {
        env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,  "com.sun.jndi.cosnaming.CNCtxFactory");
        ctx = new javax.naming.InitialContext();
        cachedDataSource  = (javax.sql.DataSource)ctx.lookup("jdbc/mysql"); 
        if (cachedDataSource == null)
            {out.println("<h2>The datasource is not getting set properly</h2>");
            conn = cachedDataSource.getConnection();}
        else
        { out.println("<h2>the datasource is not null and seems like it gets initialized.<h2>"); }
        } catch (javax.naming.NamingException ne) {}
          catch (java.sql.SQLException se) {}
        env = null;
        ctx = null;
        conn.close();
        conn = null;
        cachedDataSource = null;
    %>

RTFM
http://docs.sun.com/app/docs/doc/819-0079
The resource lookup in the application code looks like this:
InitialContext ic = new InitialContext();
String dsName = "java:comp/env/jdbc/HelloDbDs";
DataSource ds = (javax.sql.DataSource)ic.lookup(dsName);
Connection connection = ds.getConnection();
The resource being queried is listed in the res-ref-name element of the web.xml file as follows:
<resource-ref>
<description>DataSource Reference</description>
<res-ref-name>jdbc/HelloDbDs</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
The resource-ref section in a Sun Java System specific deployment descriptor, for example sun-web.xml, maps the res-ref-name (the name being queried in the application code) to the JNDI name of the JDBC resource. The JNDI name is the same as the name of the JDBC resource as defined in the resource file when the resource is created.
<resource-ref>
<res-ref-name>jdbc/HelloDbDs</res-ref-name>
<jndi-name>jdbc/HelloDbDataSource</jndi-name>

Similar Messages

  • JNDI DataSource Configuration Problem

    I configured the Tomcat so that I can use a Datasource to access a database according to the JNDI HOW TO instructions.
    I installed JDBC driver in %catalina_home%/common/lib, modified the web.xml in /WEB-INF and server.xml in /conf and coded the JSP page according to the instruction.
    But I get the following error when I run the app.
    Why this happens?
    org.apache.jasper.JasperException: Unable to compile class for JSP
    An error occurred between lines: 14 and 33 in the jsp file: /jsp/track/ds-test.jsp
    Generated servlet error:
    C:\jakarta-tomcat-4.0.3\work\localhost\examples\jsp\track\ds_0002dtest$jsp.java:64: Class org.apache.jsp.Context not found.
    Context initCtx = new InitialContext();
    ^
    An error occurred between lines: 14 and 33 in the jsp file: /jsp/track/ds-test.jsp
    Generated servlet error:
    C:\jakarta-tomcat-4.0.3\work\localhost\examples\jsp\track\ds_0002dtest$jsp.java:64: Class org.apache.jsp.InitialContext not found.
    Context initCtx = new InitialContext();
    ^
    An error occurred between lines: 14 and 33 in the jsp file: /jsp/track/ds-test.jsp
    Generated servlet error:
    C:\jakarta-tomcat-4.0.3\work\localhost\examples\jsp\track\ds_0002dtest$jsp.java:66: Class org.apache.jsp.Context not found.
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    ^
    An error occurred between lines: 14 and 33 in the jsp file: /jsp/track/ds-test.jsp
    Generated servlet error:
    C:\jakarta-tomcat-4.0.3\work\localhost\examples\jsp\track\ds_0002dtest$jsp.java:66: Class org.apache.jsp.Context not found.
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    ^
    4 errors

    I imported the JNDI classes but I get a new error.
    java.lang.NullPointerException
         at org.apache.jsp.ds_0002dtest$jsp._jspService(ds_0002dtest$jsp.java, Compiled Code)
         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
         at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java, Compiled Code)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java, Compiled Code)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.StandardContext.invoke(StandardContext.java, Compiled Code)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java, Compiled Code)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java, Compiled Code)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
         at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java, Compiled Code)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java, Compiled Code)
         at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java, Compiled Code)
         at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java, Compiled Code)
         at java.lang.Thread.run(Thread.java:472)

  • JNDI replication\lookup problems

              Hi,
              We have a WL5.1 SP12 cluster that until today consisted of 2 Solaris boxes running
              8 WL instances on the 2.6 OS.
              Today we attempted to add a third Solaris box, running 2 SP12 WL instances on the
              2.8 OS. These two new instances were identical to the other 8 in all respects apart
              from one ejb jar which they did not deploy (because of Solaris 2.8\JNI\JDK1.3.1 incompatiblilities).
              We figured that these new JVM could lookup this bean via the clustered JNDI and execute
              on one of the original 8 JVMs, so we did not deploy on these new servers. This worked
              fine on test (a 3 way cluster, on one box running Solaris 2.8 and SP10).
              However when we cut the new box in this morning we got javax.naming.NameNotFoundExceptions
              from the new JVMs.
              These new JVMs apeared to start fine, and everything looked as it should on the console,
              but still the error.
              so :
              what could it be :
              OS related - a clustering spanning 2.6 and 2.8 OSs
              SP 12 related ?
              Anybody encountered anything like this before ?
              Thanks in advance.
              Justin
              

              Yes, the EJB classes are in the server classpath.
              I assumed that JNDI replication occured as a resulting of enabling clustering.
              "Sabha" <[email protected]> wrote:
              >Are the ejb home/remote interfaces in the server classpath of the 2 newer
              >JVMs? Is jndi replication turned off?
              >
              >-Sabha
              >
              >"Justin" <[email protected]> wrote in message
              >news:[email protected]...
              >>
              >> Hi,
              >>
              >> We have a WL5.1 SP12 cluster that until today consisted of 2 Solaris boxes
              >running
              >> 8 WL instances on the 2.6 OS.
              >>
              >> Today we attempted to add a third Solaris box, running 2 SP12 WL instances
              >on the
              >> 2.8 OS. These two new instances were identical to the other 8 in all
              >respects apart
              >> from one ejb jar which they did not deploy (because of Solaris
              >2.8\JNI\JDK1.3.1 incompatiblilities).
              >> We figured that these new JVM could lookup this bean via the clustered
              >JNDI and execute
              >> on one of the original 8 JVMs, so we did not deploy on these new servers.
              >This worked
              >> fine on test (a 3 way cluster, on one box running Solaris 2.8 and SP10).
              >>
              >> However when we cut the new box in this morning we got
              >javax.naming.NameNotFoundExceptions
              >> from the new JVMs.
              >>
              >> These new JVMs apeared to start fine, and everything looked as it should
              >on the console,
              >> but still the error.
              >>
              >> so :
              >>
              >> what could it be :
              >>
              >> OS related - a clustering spanning 2.6 and 2.8 OSs
              >> SP 12 related ?
              >>
              >> Anybody encountered anything like this before ?
              >>
              >> Thanks in advance.
              >>
              >> Justin
              >>
              >>
              >>
              >
              >
              

  • Deploying a WAR file to Sun App Server 8.1 PE

    So I thought that if I downloaded Sun App Server PE 8.1 and put it on my soon-to-be production machine, it should be pretty easy right?
    Nope. So I have JSC update 6 (which includes Sun Application Server 8.0) (God how I wish there was a catchy name like Tomcat or something)
    And I have a machine running a good copy, installed and everything, of Sun Application Server 8.1 Platform Edition (another catchy name) up on the production target.
    I create a WAR file in JSC, scp it up.
    Then try to deploy it - so I get bit by the no DB connection thing.
    Ok, but when I copy each of my connection's attributes (the driver (which I did copy up to the lib directory) is MySQL's Connector/J)
    I copy the username, password, URL and DriverClass attributes to the connection pool.
    I still get a
    "Operation 'pingConnectionPool' failed in 'resources' Config Mbean. Target exception message: Class name is wrong or classpath is not set for : com.sun.sql.datasource.DriverAdapter"
    when I try to Ping the ConnectionPool
    I have javax.sql.DataSource as the resource type... (same as 8.0 uses)
    what JAR file is DriverAdapter in? anyone know?
    cheers,
    Kris

    Okay. mysql folks - this works......
    here's what happened, on the production server, different from the dev machine....
    mysql 4.1.9
    sun application server platform edition PE 8.1
    connector/j - latest
    and on the dev machine: JSC Update 6 and the app works fine on the dev machine.
    first, there is a JAR file in ~whatever/Create/SunAppServer/lib/ named
    driveradaptor.jar
    and it it comtains
    com.sun.sql.datasource.DriverAdapter
    which 8.1 ain't got
    and should be copied up to
    /installdir/SunAppServer/domains/domain1/lib/ext/driveradapter.jar
    (domain1 is your app svr domain that runs your app.)
    your Connector/J JAR needs to go here too. I used:
    mysql-connector-java-3.2.0-alpha-bin.jar
    downloaded from mysql.com.
    and then there is the whole thing about Added Properties in the Connection Pool page inside the 8.1 Admin Console (which is nice work guys). Gawd, I added a bunch of properties and am, frankly, not sure which ones actually work (for the Ping, for the initial connection creation and the eventual successful connection all seem to use different combinations...)
    and I found this in the domain's domain.xml once all the admin console page filling was done - but you'll need to add each one as a Property in the connection pool:
    <jdbc-connection-pool connection-validation-method="auto-commit" datasource-classname="com.sun.sql.datasource.DriverAdapter" fail-all-connections="false" [blah...]
    <property name="Username" value="root"/>
    <property name="Password" value="secret"/>
    <property name="ValidationQuery" value="SELECT 1"/>
    <property name="DriverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="LoginTimeout" value="0"/>
    <property name="Url" value="jdbc:mysql://localhost/databasename?autoReconnect=true"/>
    <property name="User" value="root"/>
    <property name="password" value="secret"/>
    <property name="PasswordCredential" value="secret"/>
    </jdbc-connection-pool>
    (and you see how User and Username and username are all the same thing? well, different parts of 8.1 seem to use different attributes...)
    Just keep Adding Properties in the connection pool until you get them all....
    Oh and, the two key class references for the pool are:
    datasource class: com.sun.sql.datasource.DriverAdapter
    resource type: javax.sql.ConnectionPoolDataSource
    Finally: in the /installdir/SunAppServer/domains/domain1/applications/j2ee-modules/YourAppName/WEB-INF/
    your 'sun-web.xml' (don't delete it, like some have advocated, I think that wrong) needs to look like:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd">
    <sun-web-app xmlns="http://java.sun.com/xml/ns/j2ee">
    <context-root>/yourcontext</context-root>
    <resource-ref>
    <res-ref-name>jdbc/Yourname</res-ref-name>
    <jndi-name>jdbc/Yourname</jndi-name>
    <default-resource-principal>
    <name>root</name>
    <password>secret</password>
    </default-resource-principal>
    </resource-ref>
    </sun-web-app>
    and I think that's all of it. the only Bug I would I would say is that the sun-web.xml should have the right res-ref-name, but then I think the Creator Team knows this and will fix it sometime soon.
    cheers,
    and Roger Federer lost in the Aussie Open. (I think he lost tomorrow too, that whole time zone thing being so damn Einsteinian...)
    -Kristofer

  • Integrating Sun App Server with WebSphere MQ

    Hi,
    I am using Sun App server V8.1 . I also have a websphere MQ v5.3 installed in my system. I want to integrate this MQ with the App server.
    I created a queueManager and a Queue in MQ and using the JMSAdmin console of the Mq, i created jndi lookup resources using INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
    In the application server side, i created a Resource adapter using the command:
    create-resource-adapter-config --property SupportsXA=true:ProviderIntegrationMode=jndi:RMPolicy=OnePerPhysicalConnection:JndiProperties=java.naming.factory.url.pkgs\\=com.ibm.mq.jms.naming,java.naming.factory.initial\\=com.sun.jndi.fscontext.RefFSContextFactory,java.naming.provider.url\\=file\\:D\\:\\MQ:LogLevel=finest mqra
    Then i deployed this resource adaptor using the command :
    deploy name mqra target server "D:\Sun\AppServer\lib\addons\resourceadapters\genericjmsra\genericra.rar"
    Using this resource adapter i created a connection pool, connector resource and an admin object using the commands
    create-connector-connection-pool raname mqra connectiondefinition javax.jms.QueueConnectionFactory transactionsupport  XATransaction property ConnectionFactoryJndiName=MQQCF mymqpool
    create-connector-resource --poolname mymqpool jms/MyMqQCF
    create-admin-object raname mqra restype javax.jms.Queue --property DestinationJndiName=RTQueue jms/MyMqQueue
    After that, i wrote a java code to lookup these resources and put a message into the queue.
    This is the snippet of my java code
    InitialContext ic = new InitialContext();
    QueueConnectionFactory cnxFact = (QueueConnectionFactory)ic.lookup("jms/MyMqQCF");
    Queue qu = (Queue)ic.lookup("jms/MyMqQueue");
    try {               
    QueueConnection qConn = cnxFact.createQueueConnection();
    QueueSession qSess = qConn.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
    QueueSender qSend = qSess.createSender(qu);
    TextMessage msg = qSess.createTextMessage();
    msg.setText("1");
    qSend.send(msg);
    qConn.close();
    I am getting an exception in the line, QueueConnection qConn = cnxFact.createQueueConnection();
    here is the stack trace
    java.lang.ClassCastException: com.ibm.mq.jms.MQQueueConnectionFactory
    at com.sun.genericra.outbound.ManagedQueueConnectionFactory.createXAConnection(ManagedQueueConnectionFactory.java:45)
    at com.sun.genericra.outbound.AbstractManagedConnectionFactory.createPhysicalConnection(AbstractManagedConnectionFactory.java:127)
    at com.sun.genericra.outbound.AbstractManagedConnectionFactory.createManagedConnection(AbstractManagedConnectionFactory.java:111)
    at com.sun.enterprise.resource.ConnectorAllocator.createResource(ConnectorAllocator.java:90)
    at com.sun.enterprise.resource.IASNonSharedResourcePool.getUnenlistedResource(IASNonSharedResourcePool.java:437)
    at com.sun.enterprise.resource.IASNonSharedResourcePool.internalGetResource(IASNonSharedResourcePool.java:355)
    at com.sun.enterprise.resource.IASNonSharedResourcePool.getResource(IASNonSharedResourcePool.java:250)
    at com.sun.enterprise.resource.PoolManagerImpl.getResourceFromPool(PoolManagerImpl.java:213)
    at com.sun.enterprise.resource.PoolManagerImpl.getResource(PoolManagerImpl.java:174)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:286)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:145)
    at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:121)
    at com.sun.genericra.outbound.ConnectionFactory.createConnection(ConnectionFactory.java:69)
    at com.sun.genericra.outbound.ConnectionFactory.createQueueConnection(ConnectionFactory.java:101)
    Can anybody help???

    bump
    update:
    So to avoid this problem I added spring.jar to the server classpath. that got rid of this message but then it started complaining that its missing struts2 core jar..i added that in server classpath as well...I did same for 4 other files and in the end it said 'bean for xwork has already been initialized' (because all these jars are in the application as well).
    So I am stuck. if I add all jars to server classpath..it says beans have already been initialized. If I take out the jars from server classpath then it says that stuff is missing (eg. contextLoader.properties missing - orig post)
    again, all this goes away when I restart the server..so i am just trying to avoid having to restart server every code change.

  • JBOSS jndi Datasource: jdbc not bound

    Im adding an jndi Datasource to JBOSS 4.0.2.
    1. i copied jdbc driver to JBOSS_HOME/server/default/lib.
    2. i copied following ds.xml to JBOSS_HOME/server/default/deploy (its based ony the mysql-ds.xml from the samples)
    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
      <local-tx-datasource>
        <jndi-name>jndi-name</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/databasename</connection-url>
        <driver-class>org.gjt.mm.mysql.Driver</driver-class>
        <user-name>username</user-name>
        <password>password</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
          -->
        <!-- sql to call on an existing pooled connection when it is obtained from pool
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
          -->
        <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
        <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
    </datasources>I look this up using java:jndi-name. Works perfect.
    For compatibility with other containers, i want to move my jndi-datasource to java:comp/env/jdbc/jndi-name
    So i change my ds-description:
    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
      <local-tx-datasource>
        <jndi-name>comp/env/jdbc/jndi-name</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/databasename</connection-url>
        <driver-class>org.gjt.mm.mysql.Driver</driver-class>
        <user-name>username</user-name>
        <password>password</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
          -->
        <!-- sql to call on an existing pooled connection when it is obtained from pool
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
          -->
        <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
        <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
    </datasources>Looking this up with java:comp/env/jdbc/jndi-name leads to Could not find datasource: java:comp/env/jdbc/jndi-name
    javax.naming.NameNotFoundException: jdbc not bound
    Some lines above jboss prints:
    [WrapperDataSourceService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:name=comp/env/jdbc/jndi-name,service=DataSourceBinding to JNDI name 'java:comp/env/jdbc/jndi-name
    Please can somebody explain what the problem is about binding a datasource somewhere else than directly to "java:"

    In web.xml making the following entry:
    <web-app>
    <description>MySQL Test App</description>
    <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/test</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    Next, add a file jboss-web.xml under WEB-INF/ folder of the web-application. This file should contain entry as:
    <jboss-web>
    <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/test</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <jndi-name>java:/jdbc/test</jndi-name>
    <res-auth>Container</res-auth>
    </resource-ref>
    </jboss-web>
    Next, in JBOSS_HOME/server/default/deploy folder make a xx-ds.xml file or else, a similiar file can be found in that same folder with the name hsqldb-ds.xml. Make following entries in that xml file:
    <datasources>
    <local-tx-datasource>
    <jndi-name>/jdbc/test</jndi-name>
    <type-mapping>MySQL</type-mapping>
    <connection-url>jdbc:mysql://localhost:3306/shopping_cart</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>root123</password>
    <min-pool-size>1</min-pool-size>
    <max-pool-size>5</max-pool-size>
    </local-tx-datasource>
    This should bind the jndi name.
    In our client application, we need to look up as:
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup("java:/jdbc/test");
    Connection conn = ds.getConnection();
    This works perfectly.

  • How to configure sun app.

    can some body help me to configure sun app. to use it in my 1st EJB
    this is it my 1st EJB.
    1-i have this homeobject
    import javax.ejb.*;
    import java.rmi.RemoteException;
    * This is the home interface for HelloBean. This interface
    * is implemented by the EJB Server - the
    * implemented object is called the Home Object, and serves
    * as a factory for EJB Objects.
    * The create() method in this Home Interface corresponds to
    * the ejbCreate() method in HelloBean.
    public interface HelloHome extends EJBHome {
    * This method creates the EJB Object.
    * then returns a reference to the newly created EJB Object.
    Hello create() throws RemoteException, CreateException;
    2- this is ojb
    import javax.ejb.*;
    import java.rmi.RemoteException;
    import java.rmi.Remote;
    * This is the HelloBean remote interface.
    * This interface is what clients use to
    * interact with EJB objects. The container
    * vendor implements this interface. The
    * implemented object is the EJB object, which
    * delegates method calls to the actual EJB.
    public interface Hello extends EJBObject {
    * The hello() method returns a greeting to the client.
    public String hello() throws RemoteException;
    3- this is the bean it self.
    import javax.ejb.*;
    import javax.naming.*;
    import javax.rmi.*;
    * Demonstration stateless session bean.
    public class HelloBean implements SessionBean {
    public String test;
    // EJB-required methods
    public void ejbCreate() {
    System.out.println("ejbCreate()");
    public void ejbRemove() {
    System.out.println("ejbRemove()");
    public void ejbActivate() {
    System.out.println("ejbActivate()");
    public void ejbPassivate() {
    System.out.println("ejbPassivate()");
    public void setSessionContext(SessionContext ctx) {
    System.out.println("setSessionContext()");
    // Business methods
    public String hello() {
    System.out.println("hello()");
    return "Hello, World!";
    4- this th client
    import javax.ejb.*;
    import javax.rmi.*;
    import javax.naming.*;
    import java.util.*;
    public class HelloClient {
    public static void main (String args[]) {
    Hashtable props = new Hashtable();
    InitialContext initCtx;
    try {
    props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
    props.put("java.naming.provider.url", "iiop://localhost:1050");
    initCtx = new InitialContext(props);
    Object obj = initCtx.lookup("HelloHome");
    HelloHome hh = (HelloHome) PortableRemoteObject.narrow(obj, HelloHome.class);
    Hello h = (Hello)hh.create();
    System.out.println(h.hello());
    h.remove();
    catch(Exception e) {
    e.printStackTrace();
    System.out.println(e.getMessage());
    }

    Use deploytool and follow the instructions in the J2EE tutorial.
    It's quite straightforward.

  • Need Help in JNDI Datasource using tomcat and spring

    Hi,
    I am trying to connect my local database using JNDI datasource in tomcat and spring
    I have done the below configuration in Tomcat 7 server:
    In tomcat server.xml (Path: E:\apache-tomcat-7.0.35\conf) I added the below configuration
    <Resource name="UserDatabase" auth="Container"
    type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    pathname="conf/tomcat-users.xml" />
    <Resource name="jdbc/myApp" auth="Container"
    type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:hr@localhost:1521:XE>"
    username="testUser" password="password"
    maxActive="10" maxIdle="5"
    maxWait="60000" removeAbandoned="true"
    removeAbandonedTimeout="60" logAbandoned="true"/>
    In web.xml, I have added the below config:
    <resource-ref>
    <description>Oracle Spring JNDI Datasource</description>
    <res-ref-name>jdbc/myApp</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    And in my Spring context xml (ws-context.xml), added below config:
    <bean name="myDataSourceInJndi" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/myApp"/>
    </bean>
    <jee:jndi-lookup id="dataSource" jndi-name="/jdbc/myApp" resource-ref="true"/>
    In my Java code, I am trying the below code to connect DataBase:
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    DataSource ds = (DataSource) envCtx.lookup("jdbc/myApp");
    ds.getConnection();
    But I am getting the below exception while executing ****ds.getConnection();***
    java.lang.IllegalStateException: Connection factory returned null from createConnection
    at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:584)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at com.wipro.spring.impl.EmployeeImpl.getDetails(EmployeeImpl.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
    at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
    at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
    at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
    at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:471)
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
    at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
    at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
    at com.sun.xml.ws.transport.http.servlet.WSSpringServlet.doPost(WSSpringServlet.java:52)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    Can you please me to resolve this issue? Am I missing any configuration or any mistake in my java code please suggest your suggestions.
    Thanks

    Hi,
    I am trying to connect my local database using JNDI datasource in tomcat and spring
    I have done the below configuration in Tomcat 7 server:
    In tomcat server.xml (Path: E:\apache-tomcat-7.0.35\conf) I added the below configuration
    <Resource name="UserDatabase" auth="Container"
    type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    pathname="conf/tomcat-users.xml" />
    <Resource name="jdbc/myApp" auth="Container"
    type="javax.sql.DataSource"
    driverClassName="oracle.jdbc.OracleDriver"
    url="jdbc:oracle:thin:hr@localhost:1521:XE>"
    username="testUser" password="password"
    maxActive="10" maxIdle="5"
    maxWait="60000" removeAbandoned="true"
    removeAbandonedTimeout="60" logAbandoned="true"/>
    In web.xml, I have added the below config:
    <resource-ref>
    <description>Oracle Spring JNDI Datasource</description>
    <res-ref-name>jdbc/myApp</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    And in my Spring context xml (ws-context.xml), added below config:
    <bean name="myDataSourceInJndi" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/myApp"/>
    </bean>
    <jee:jndi-lookup id="dataSource" jndi-name="/jdbc/myApp" resource-ref="true"/>
    In my Java code, I am trying the below code to connect DataBase:
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    DataSource ds = (DataSource) envCtx.lookup("jdbc/myApp");
    ds.getConnection();
    But I am getting the below exception while executing ****ds.getConnection();***
    java.lang.IllegalStateException: Connection factory returned null from createConnection
    at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:584)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at com.wipro.spring.impl.EmployeeImpl.getDetails(EmployeeImpl.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
    at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
    at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
    at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
    at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:471)
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
    at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
    at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
    at com.sun.xml.ws.transport.http.servlet.WSSpringServlet.doPost(WSSpringServlet.java:52)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
    Can you please me to resolve this issue? Am I missing any configuration or any mistake in my java code please suggest your suggestions.
    Thanks

  • BC4J and JNDI DataSource Configuration

    Hi,
    I need help in making the BC4J use a DataSource for creating connections. Could you anyone tell me step by step instructions to do it?
    I have created a Database Connection using JDBC for creating a BC4J App Module, View Objects etc.
    Then I created a Business Component Package by using the wizard. Everything worked fine till now. But I was to use a connection pool that is created in my App Server which happens to be a WebLogic 7.0 App Server. I have created a JDBCConnection pool and a JDBCDataSource in the App Server. The configuration for it is as follows in the weblogic configuration file.
    <JDBCConnectionPool DriverName="oracle.jdbc.driver.OracleDriver"
    MaxCapacity="5" Name="OracleConnectionPool"
    Password="{3DES}n51DlVgPmmQ="
    Properties="user=empac;dll=ocijdbc9;protocol=oci"
    Targets="myserver" URL="jdbc:oracle:oci:@DB921C"/>
    <JDBCDataSource JNDIName="OCIDataSource" Name="OCIDataSource"
    PoolName="OracleConnectionPool" Targets="myserver"/>
    I wanted to edit the "Configurations" to specify the JDBC DataSource. When I saved the configuration for the App Module this is how my bc4j.xcfg looks.
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <BC4JConfig>
    <AppModuleConfigBag>
    <AppModuleConfig name="BuyerModuleLocal">
    <java.naming.security.principal>system</java.naming.security.principal>
    <DeployPlatform>LOCAL</DeployPlatform>
    <jbo.TypeMapEntries>Java</jbo.TypeMapEntries>
    <JDBCDataSource>OCIDataSource</JDBCDataSource>
    <jbo.project>BC4JTry</jbo.project>
    <AppModuleJndiName>com.explore.bc4j.BuyerModule</AppModuleJndiName>
    <ApplicationName>com.explore.bc4j.BuyerModule</ApplicationName>
    <java.naming.security.credentials>security</java.naming.security.credentials>
    </AppModuleConfig>
    </AppModuleConfigBag>
    <ConnectionDefinition name="DB921C">
    <ENTRY name="JDBC_PORT" value="1521"/>
    <ENTRY name="ConnectionType" value="JDBC"/>
    <ENTRY name="HOSTNAME" value="joshua"/>
    <ENTRY name="user" value="empac"/>
    <ENTRY name="ConnectionName" value="DB921C"/>
    <ENTRY name="SID" value="DB921C"/>
    <ENTRY name="JdbcDriver" value="oracle.jdbc.driver.OracleDriver"/>
    <ENTRY name="password" value="empac"/>
    <ENTRY name="ORACLE_JDBC_TYPE" value="thin"/>
    <ENTRY name="DeployPassword" value="true"/>
    </ConnectionDefinition>
    </BC4JConfig>
    When I tried to run a testClient which uses the App Module it is failing giving me an exception saying could not lookup for the DataSource. In one of the detailed error messages, I got this 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
    I checked the "Configurations" window and it was having
    "oracle.jbo.common.JboInitialContextFactory" for the property "java.naming.factory.initial".
    Could anyone tell me how to solve this issue. I did read the BC4J & JNDI Datasource configuration thread in the same forum and unfortunately that did not help.
    Krish

    What does you test client code look like and can you give us the complete stack trace.
    Dhiraj

  • CF8 with JBoss JNDI datasource

    After installing and configuring a CF8 for J2EE running on
    JBoss 4.2.2.GA with Java 6, I have created a JNDI datasource for
    Oracle 10g in the oracle-ds.xml file. I have configured a CF8
    datasource that uses the JNDI resource.
    Any query that is NOT using cfqueryparam works quite well.
    As soon as cfqueryparam is used, I get an "Error casting an
    object of type org.jboss.resource.adapter.jdbc.WrappedConnection
    cannot be cast to coldfusion.server.j2ee.sql.JRunConnectionHandle
    to an incompatible type.".
    The configuration and the exception is pretty much the same
    as described in
    Problem
    description.
    This is clearly a CF8 bug and I was wondering if there is any
    known workaround for it.

    In web.xml making the following entry:
    <web-app>
    <description>MySQL Test App</description>
    <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/test</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </web-app>
    Next, add a file jboss-web.xml under WEB-INF/ folder of the web-application. This file should contain entry as:
    <jboss-web>
    <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/test</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <jndi-name>java:/jdbc/test</jndi-name>
    <res-auth>Container</res-auth>
    </resource-ref>
    </jboss-web>
    Next, in JBOSS_HOME/server/default/deploy folder make a xx-ds.xml file or else, a similiar file can be found in that same folder with the name hsqldb-ds.xml. Make following entries in that xml file:
    <datasources>
    <local-tx-datasource>
    <jndi-name>/jdbc/test</jndi-name>
    <type-mapping>MySQL</type-mapping>
    <connection-url>jdbc:mysql://localhost:3306/shopping_cart</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>root123</password>
    <min-pool-size>1</min-pool-size>
    <max-pool-size>5</max-pool-size>
    </local-tx-datasource>
    This should bind the jndi name.
    In our client application, we need to look up as:
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup("java:/jdbc/test");
    Connection conn = ds.getConnection();
    This works perfectly.

  • JNDI Lookup Problem (General Problem)

    hi all,
    i am newbie on bea products, but i have some experience on java technologies, how i fount on bea documentations and forums many people has the same problem like this, can anybody help us (me)?
    problem: how is it possible to write simple client for j2ee server application? i found some posts about jndi lookup, and fount about j2ee client, but is there any doc or example how to write this j2ee client ???
    i worked with many application servers and i have no problem with them (JBoss, Sun App Server, IBM Websophere, Oracle AS etc.)
    some people told about jndi tree on Web Logic Server Administration console , i found this tree i my session beans looks like :
    Binding Name:
    TimestenExampleTimestenExample_jarInsertSubscriberBean_InsertSubscriber
    Class:     
    test.InsertSubscriberBean_o7jk9u_InsertSubscriberImpl_1000_WLStub
    why is so strange name for class or binding name ????
    my session bean name is : InsertSubscriber
    and it's implementation : InsertSubscriberBean
    how i can lookup from client ?????
    can anybody show me code snippet ???
    my client looks like :
    import java.util.Hashtable;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NameClassPair;
    import javax.naming.NamingEnumeration;
    import javax.naming.NamingException;
    import org.hibernate.property.Dom4jAccessor.ElementGetter;
    public class Client {
         public static void main(String[] args) {
              Context ctx = null;
              Hashtable ht = new Hashtable();
              ht.put(Context.INITIAL_CONTEXT_FACTORY,
                        "weblogic.jndi.WLInitialContextFactory");
              ht.put(Context.PROVIDER_URL, "t3://192.9.200.222:7001");
              try {
                   ctx = new InitialContext(ht);
                   InsertSubscriber usagefasade = (InsertSubscriber) ctx
                             .lookup("java:comp/InsertSubscriber");
              } catch (NamingException e) {
                   e.printStackTrace();
              } finally {
                   try {
                        ctx.close();
                   } catch (Exception e) {
                        e.printStackTrace();
    }can anybody show me what is there incorrect ????
    oo yes and i have weblogic.jar file into my client classpath.

    Hi,
    Your EJB client looks fine.
    You should use the JNDI name of your ejb while doing the lookup. i.e :
    InsertSubscriber usagefasade = (InsertSubscriber) ctx.lookup("..use JNDI name of EJB...");
    You can use the JNDI name of the EJB that you see in the JNDI tree of weblogic. [don't use Binding Name or Class name]. you can also specify the JNDI name by "jndi-name" attribute in weblogic-ejb-jar.xml.
    for more info:
    http://e-docs.bea.com/wls/docs81/ejb/ejb11.html
    Thanks,
    Qumar Hussain

  • Connecting to EJ bean in Sun App Server 8

    I am working my way through the j2eetutorial14, and have successfully built the Converter app. However, I need to run the stand-alone client, connecting to the bean, in a server-independent way. So, as part of my exercise, I copied the client code in Eclipse, and made the following changes to the code:
    from the original example:
    Context initial = new InitialContext();
    Context myEnv = (Context) initial.lookup("java:comp/env");
    Object objref = myEnv.lookup("ejb/SimpleConverter");
    ConverterHome home = (ConverterHome) PortableRemoteObject.narrow(objref, ConverterHome.class);to this:
    Properties properties = new Properties();
    properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory");
    properties.put(Context.PROVIDER_URL, "corbaloc:iiop:localhost:3700");
    Context initial = new InitialContext(properties);
    Object objref = initial.lookup("ConverterBean");
    ConverterHome home = (ConverterHome) PortableRemoteObject.narrow(objref, ConverterHome.class);Now I am getting this exception in the narrow() method:
    java.lang.ClassCastException
         at com.sun.corba.se.internal.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:293)
         at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:134)
         at ConverterClient.main(ConverterClient.java:27)When I run the client from the script:
    appclient -client ConverterAppClient.jarit works as expected. I am obviously missing something in my Eclipse runtime environment, but the manual was of no help so far. (But j2ee.jar library from C:\Sun\AppServer\lib is in the classpath.)
    If anyone successfully connected to the Sun App Server 8 EJB from a stand-alone client and can share their wisdom, I will appreciate it.
    On a more general note, what are the pitfalls to watch for when writing, packaging and distributing an EJB app (bean and stand-alone client) in a server-independent way? Any pointers?
    Thanks for any help.
    Alex.

    Did you have the EJB client JAR in your classpath? Yes, and I spent all day searching the Forums for the clues. I found the answer, and was going to post it here. The client JAR was missing the RMI stubs. The process of generating the stubs is quite cumbersome - at least, the one that I discovered. It involves deploying the EAR first, then going to the Admin Console and manually setting a number of options, then collecting the sought-for JAR from the Sun App Server's applications directory. The generated file will contain the stubs, and also the Home and Remote interface files, as well as the bean class (something that the client will never need). So, I may have to write a script to strip off the needless baggage from the client JAR.
    I have been working with JBoss and its plugin for Eclipse for some time now, and grew spoiled by the ease of deployment there, including the fact that the JBoss/Eclipse combo took care of the RMI stubs and many other things that Sun's server exposes to the developer.
    Anyway, here is my cookbook that I made as I was working through the process of generating the stubs:
    ====================================
    Creating a stand-alone Client:
    The stand-alone client need RMI stubs to communicate with the EJ bean on the server side. To create the stubs:
    1. Start the Admin Console web page (Start > All Programs > Sun Microsystems > Application Server PE > Admin Console). In the left-hand frame select: Applications > Enterprise Applications.
    2 In the right-hand frame, press Deploy button.
    3 Select file to upoad (navigate to the application EAR). Press Next.
    4. Set Application Name field (it should be preset), and check the Generate: RMIStubs checkbox. If this procedure was done before, check the Redeploy box to force generation of the file.
    5. Press OK button.
    The JAR file with stubs will be placed into C:\Sun\AppServer\domains\domain1\applications\j2ee-apps directory.
    The stubs have format _name_Stub.class and _nameHome_Stub.class (e.g. for Converter app the files are ConverterStub.class and ConverterHomeStub.class). These files must be extracted and placed into the client's classpath. Alternatively, the entire JAR file can be made part of the client's classpath.
    ====================================
    Thank you for the quick reply.
    Alex.

  • HELP - Can't connect to Sun App Server

    Hi,
    I'm confused. The Sun App Server documentation states that the protocol to use in the JNDI context lookup is jms or tcpjms, and that the service runs on port 7676:
    javax.naming.ConfigurationException: Invalid URL: jms://localhost:7676 [Root exception is java.net.MalformedURLException: unknown protocol: jms]
    When I use the other (commented-out) line: iiop://localhost:3700, I get a different error (and I don't think this is the protocol I want to use anyway).
    JNDI API lookup failed: javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
    javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
    So which is it?? Here is my code...thanks in advance for your help!
    package com.tpc.jms.simpleProducer;
    import javax.jms.*;
    import javax.naming.*;
    import java.util.Hashtable;
    import java.util.Properties;
    public class SimpleJMSTest {
    // public static final String PROVIDER_URL = "iiop://localhost:3700";
    public static final String PROVIDER_URL = "jms://localhost:7676";
    public static final String CONTEXT_FAC = "com.sun.jndi.cosnaming.CNCtxFactory";
    public static void main (String argv[]) {
    try {
    Properties properties = new Properties();
    properties.put(Context.PROVIDER_URL, PROVIDER_URL);
    properties.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FAC);
    properties.put(Context.SECURITY_PRINCIPAL, "guest");
    properties.put(Context.SECURITY_CREDENTIALS, "guest");
    InitialContext initialCtx = new InitialContext(properties);
    System.out.println("Good!");
    //TopicConnectionFactory topicConnFactory = (TopicConnectionFactory) initialCtx.lookup (fac);
    //Topic nasdaqTopic = (Topic)initialCtx.lookup(topic);
    /* System.out.println("Creating topic connection");
    TopicConnection topicConnection = topicConnFactory.createTopicConnection();
    topicConnection.start ();
    System.out.println("Creating topic session: not transacted, auto ack");
    TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    System.out.println("Creating topic, subscriber");
    TopicSubscriber nasdaqTopicSubscriber = topicSession.createSubscriber (nasdaqTopic);
    System.out.println ("Ready to subscribe for messages :");
    nasdaqTopicSubscriber.setMessageListener(new SubscriberListener());*/
    catch (Exception e) {
    e.printStackTrace ();
    }

    Hi,
    First of all, you don't use iiop in JMS.
    And also for your problem, did you by any chance forget to create your connectionfactory in the application server?

  • Is it possible for jsp(tomcat container)  access ejb deployed in sun app se

    if it's possible ,how to implement

    Hi,
    Yes it is possible for a JSP in tomcat container to lookup EJB in sun app server.
    Please refer following article for guidelines. If you need further help please revert back.
    http://www.onjava.com/pub/a/onjava/2003/02/12/ejb_tomcat.html?page=2
    HTH
    VJ

  • How to use jndi datasource on Weblogic instead of adding a DB data source

    Hi All,
    version: 11.1.1.4
    I am trying to figure out how in my ADF applications I can use an existing jndi datasource out on our weblogic servers instead of having to bury the Database db source in my adf applications. Like SOA I would like to reference the DB directly during design so I can pull in entities and build view objects, but when I deploy I want it to reference the jndi datasource out on the weblogic server.
    Is this possible? If so I am not sure how to configure it like I would a DB adapter in SOA.
    As always appreciate the info.
    Thanks,
    S

    If you use ADF in the model layer (application modules) you can configure them to use JNDI Datasources. Just right click on the application module and select 'Configurations...'. In the next dialog you see all the configurations currently available (one named xxxxxlocal and one named xxxxxshared at least). Select the local and hit the edit button. This open the DB connect dialog where you can change the connection from JDBC URL to JDBC Datasource (JNDI). Save your work and when you now start the app it will use the JNDI name.
    Timo

Maybe you are looking for

  • ITunes 11.4.0.18 - iPhone 5s no longer recognized

    Hi, I downloaded iTunes 11.4.0.18 this morning.  Now my iPhone 5s is no longer recognized.  It won't even charge from the computer's USB. I have Windows 7 on my PC. Apple Mobile Device Support 8.0.0.23 is installed.  I even did a "repair" of it, and

  • How do I keep folder settings below the top level

    There's a certain Finder setting I prefer for folders regarding icon view. I use a size and arrangement that works very well for me. After replacing my older MacBook Pro with a new MBP and transferring all my data, the setting I prefer only works at

  • Alv list display tripple dot behind the character

    Hi everyone, when I display my report, I found one colume which is cost center. it display like this      2000020  ...      2000010  ... while another cost center colume display like this      2000020      2000020 so I wonder what is "..." behind the

  • 10.8.4 Update stuck

    I've been trying to update the software for my mac. but it froze. It says "caclulating." How do i finish the update?

  • Missing apps in 'nokia collection'

    A couple og games useful apps has disapeared, such as play-to and camera extras. My phone lumia 710 with newest update. Where are they? Solved! Go to Solution.