Hi,

I checked this out. After patching  to the kernal , admin and tenents can
access their own Data Sources through the web application.
Another point that I found is now without having the
'java.naming.factory.initial' property  ,it  worked.


protected void doGet(HttpServletRequest httpServletRequest,
                         HttpServletResponse httpServletResponse)
throws ServletException, IOException {
        try {

            Context initContext = new InitialContext();

            Object result = initContext.lookup("jdbc/myjndiDatasource");
            System.out.println("Result ==> " + result);

        } catch (NamingException e) {
            e.printStackTrace();  //To change body of catch statement
use File | Settings | File Templates.
        }

        httpServletResponse.getOutputStream().print("testString");
    }


thanks
harsha thirimanna



>
>
>
> On Wed, Jan 2, 2013 at 10:30 AM, Manjula Rathnayake <[email protected]>wrote:
>
>>
>>
>> ---------- Forwarded message ----------
>> From: Amila Suriarachchi <[email protected]>
>> Date: Sat, Dec 29, 2012 at 7:49 AM
>> Subject: [Dev] Accessing Carbon data sources from web applications
>> To: WSO2 Developers' List <[email protected]>, Dimuthu Leelarathne <
>> [email protected]>
>>
>>
>> hi,
>>
>> Currently it is not possible to access the carbon data sources created
>> from the Admin console from the web applications. The reason for this
>> the current configuration context factory class (i.e.
>> org.apache.naming.java.javaURLContextFactory) checks for the class
>> loaders.
>>
>> It has following method.
>>
>> public Context getInitialContext(Hashtable environment)
>>    97           throws NamingException {
>>    98           if (ContextBindings.isThreadBound() ||
>>    99               (ContextBindings.isClassLoaderBound())) {
>>   100               // Redirect the request to the bound initial context
>>   101               return new SelectorContext(environment, true);
>>   102           } else {
>>   103               // If the thread is not bound, return a shared
>> writable context
>>   104               if (initialContext == null)
>>   105                   initialContext = new NamingContext(environment,
>> MAIN);
>>   106               return initialContext;
>>   107           }
>>   108       }
>>
>> We can avoid this by creating a new Context Factory by extending the
>> given context factory. Do the following steps.
>>
>> 1. Apply the patch to org.wso2.carbon.tomcat bundle at the kernal.
>> This adds the new over-ridden class. and copy the jar file.
>>
>>
>> 2. change the carbon.xml jndi context factory to
>>
>> <DefaultInitialContextFactory>org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory</DefaultInitialContextFactory>
>>
>> 3. Create a data source from the Admin console ui.
>>
>> 4. Access that within a servelet as follows.
>>
>> protected void doGet(HttpServletRequest httpServletRequest,
>>                          HttpServletResponse httpServletResponse)
>> throws ServletException, IOException {
>>         try {
>>             Hashtable hashtable = new Hashtable();
>>             hashtable.put("java.naming.factory.initial",
>> "org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory");
>>             Context initContext = new InitialContext(hashtable);
>>             Object result = initContext.lookup("jdbc/myjndiDatasource");
>>             System.out.println("Result ==> " + result);
>>
>>         } catch (NamingException e) {
>>             e.printStackTrace();  //To change body of catch statement
>> use File | Settings | File Templates.
>>         }
>>
>>         httpServletResponse.getOutputStream().print("testString");
>>     }
>>
>> @Dimuthu is this fix your issue at AppFactory?
>>
>> thanks,
>> Amila.
>>
>> --
>> *Amila Suriarachchi*
>>
>> Software Architect
>> WSO2 Inc. ; http://wso2.com
>> lean . enterprise . middleware
>>
>> phone : +94 71 3082805
>>
>> _______________________________________________
>> Dev mailing list
>> [email protected]
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>>
>>
>> --
>> Manjula Rathnayaka
>> Software Engineer
>> WSO2, Inc.
>> Mobile:+94 77 743 1987
>>
>
>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to