Hi

Iam looking to develop a REST based webservice but I don't want to use any
application server. All I am looking is to start my application which in
turn should start the http server with CDI along with Jax-RS.  I felt
OpenEJB is the right tool for this.

I have used "com.sun.net.httpserver.HttpServer" as http server and Jersey
for my Jax-RS implementation and now I would like to use OpenEJB for CDI.

When I tried to write something like

public static void main(String[] args) throws Exception {
        MyBootStrap bootStrap= new MyBootStrap();
        Properties p = new Properties();
        p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.LocalInitialContextFactory");

p.setProperty("com.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager",
"true");
        EJBContainer.createEJBContainer(p).getContext().bind("inject",
bootStrap);

        HttpServer server = HttpServer.create(new InetSocketAddress(9998),
0);
        HttpHandler sf = RuntimeDelegate.getInstance().createEndpoint(new
ApplicationConfig(), HttpHandler.class);
        server.createContext("/", sf);
        server.start();
    }


But when I start my application then I am getting exception.
java.lang.RuntimeException: 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
    at
com.sun.jersey.server.impl.cdi.CDIExtension.initialize(CDIExtension.java:196)
    at
com.sun.jersey.server.impl.cdi.CDIExtension.beforeBeanDiscovery(CDIExtension.java:297)
    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
org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:295)
    at
org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:429)
...More

Detail exception is attached as attachment.


I am not understanding how to trigger the CDI while starting http server.

Please give me some pointers if I am doing any wrong or if I should use any
thing more.

Thanks in advance.
-- 
Thanks and Regards
N Radhakrishna Kalyan

P:  +46 733 312 584
http://about.me/nrkkalyan
 <http://about.me/nrkkalyan>
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in 
[jar:file:/C:/Users/rnimmagadda/.gradle/caches/artifacts-23/filestore/org.slf4j/slf4j-jdk14/1.7.2/jar/a31607d3a669240a0c282eda69bfefa7e8e05d75/slf4j-jdk14-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in 
[jar:file:/C:/Users/rnimmagadda/.gradle/caches/artifacts-23/filestore/org.slf4j/slf4j-log4j12/1.7.5/jar/6edffc576ce104ec769d954618764f39f0f0f10d/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: 
********************************************************************************
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: OpenEJB http://openejb.apache.org/
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: Startup: Sat Oct 19 16:45:58 CEST 2013
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: Version: 4.5.2
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: Build date: 20130320
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: Build time: 03:56
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: 
********************************************************************************
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: openejb.home = C:\DRWP\Workspace-Aug\OpenEJB-QuickStart
2013-okt-19 16:45:58 org.apache.openejb.OpenEJB$Instance <init>
INFO: openejb.base = C:\DRWP\Workspace-Aug\OpenEJB-QuickStart
2013-okt-19 16:45:58 org.apache.openejb.cdi.CdiBuilder initializeOWB
INFO: Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@7cfefe3f
2013-okt-19 16:45:58 org.apache.openejb.cdi.CdiBuilder initializeOWB
INFO: Succeeded in installing singleton service
2013-okt-19 16:45:58 org.apache.openejb.util.OptionsLog info
INFO: Using 'javax.ejb.embeddable.EJBContainer=true'
2013-okt-19 16:45:58 org.apache.openejb.config.ConfigUtils 
searchForConfiguration
INFO: Cannot find the configuration file [conf/openejb.xml].  Will attempt to 
create one for the beans deployed.
2013-okt-19 16:45:58 org.apache.openejb.config.ConfigurationFactory 
configureService
INFO: Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
2013-okt-19 16:45:58 org.apache.openejb.config.ConfigurationFactory 
configureService
INFO: Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
2013-okt-19 16:45:58 org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating TransactionManager(id=Default Transaction Manager)
2013-okt-19 16:45:58 org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating SecurityService(id=Default Security Service)
2013-okt-19 16:45:59 org.apache.openejb.config.DeploymentsResolver 
loadFromClasspath
INFO: Inspecting classpath for applications: 24 urls. Consider adjusting your 
exclude/include.  Current settings: openejb.deployments.classpath.exclude='', 
openejb.deployments.classpath.include='.*'
2013-okt-19 16:46:00 org.apache.openejb.config.DeploymentsResolver processUrls
INFO: Found EjbModule in classpath: c:\drwp\workspace-aug\openejb-quickstart\bin
2013-okt-19 16:46:00 org.apache.openejb.config.DeploymentsResolver 
loadFromClasspath
INFO: Searched 24 classpath urls in 1090 milliseconds.  Average 45 milliseconds 
per url.
2013-okt-19 16:46:00 org.apache.openejb.config.ConfigurationFactory 
loadApplication
INFO: Beginning load: c:\drwp\workspace-aug\openejb-quickstart\bin
2013-okt-19 16:46:00 org.apache.openejb.config.ConfigurationFactory 
configureApplication
INFO: Configuring enterprise application: 
C:\DRWP\Workspace-Aug\OpenEJB-QuickStart
2013-okt-19 16:46:00 org.apache.openejb.config.InitEjbDeployments deploy
INFO: Auto-deploying ejb Course: EjbDeployment(deployment-id=Course)
2013-okt-19 16:46:00 org.apache.openejb.config.ConfigurationFactory 
configureService
INFO: Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
2013-okt-19 16:46:00 org.apache.openejb.config.AutoConfig createContainer
INFO: Auto-creating a container for bean OpenEJB-QuickStart.Comp484661004: 
Container(type=MANAGED, id=Default Managed Container)
2013-okt-19 16:46:00 org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Container(id=Default Managed Container)
2013-okt-19 16:46:00 org.apache.openejb.core.managed.SimplePassivater init
INFO: Using directory C:\Users\RNIMMA~1\AppData\Local\Temp for stateful session 
passivation
2013-okt-19 16:46:00 org.apache.openejb.config.ConfigurationFactory 
configureService
INFO: Configuring Service(id=Default Stateless Container, type=Container, 
provider-id=Default Stateless Container)
2013-okt-19 16:46:00 org.apache.openejb.config.AutoConfig createContainer
INFO: Auto-creating a container for bean Course: Container(type=STATELESS, 
id=Default Stateless Container)
2013-okt-19 16:46:00 org.apache.openejb.assembler.classic.Assembler createRecipe
INFO: Creating Container(id=Default Stateless Container)
2013-okt-19 16:46:00 org.apache.openejb.config.AppInfoBuilder build
INFO: Enterprise application "C:\DRWP\Workspace-Aug\OpenEJB-QuickStart" loaded.
2013-okt-19 16:46:00 org.apache.openejb.assembler.classic.Assembler 
createApplication
INFO: Assembling app: C:\DRWP\Workspace-Aug\OpenEJB-QuickStart
2013-okt-19 16:46:00 org.apache.openejb.assembler.classic.JndiBuilder bindJava
INFO: Jndi(name="java:global/OpenEJB-QuickStart/Course!org.gradle.Course")
2013-okt-19 16:46:00 org.apache.openejb.assembler.classic.JndiBuilder bindJava
INFO: Jndi(name="java:global/OpenEJB-QuickStart/Course")
2013-okt-19 16:46:00 org.apache.openejb.cdi.CdiBuilder initSingleton
INFO: Existing thread singleton service in SystemInstance(): 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@7cfefe3f
2013-okt-19 16:46:00 org.apache.openejb.cdi.OpenEJBLifecycle startApplication
INFO: OpenWebBeans Container is starting...
2013-okt-19 16:46:00 org.apache.webbeans.plugins.PluginLoader startUp
INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
2013-okt-19 16:46:00 org.apache.openejb.cdi.OpenEJBLifecycle startApplication
ALLVARLIG: CDI Beans module deployment failed
java.lang.RuntimeException: 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
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.initialize(CDIExtension.java:196)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.beforeBeanDiscovery(CDIExtension.java:297)
        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 
org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:295)
        at 
org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:429)
        at 
org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:484)
        at 
org.apache.openejb.cdi.BeansDeployer.fireBeforeBeanDiscoveryEvent(BeansDeployer.java:153)
        at 
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:193)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:167)
        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:43)
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:723)
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:546)
        at 
org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:368)
        at 
javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56)
        at org.gradle.Main1.main(Main1.java:36)
Caused by: 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
        at 
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
        at 
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
        at 
javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
        at javax.naming.InitialContext.getNameParser(InitialContext.java:480)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.diveIntoJNDIContext(CDIExtension.java:264)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.createJerseyConfigJNDIContext(CDIExtension.java:273)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.initialize(CDIExtension.java:192)
        ... 17 more
2013-okt-19 16:46:00 org.apache.openejb.assembler.classic.Assembler 
destroyApplication
INFO: Undeploying app: C:\DRWP\Workspace-Aug\OpenEJB-QuickStart
Exception in thread "main" 
org.apache.openejb.OpenEjbContainer$AssembleApplicationException: 
org.apache.openejb.OpenEJBException: Creating application failed: 
C:\DRWP\Workspace-Aug\OpenEJB-QuickStart: couldn't start owb context
        at 
org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:372)
        at 
javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56)
        at org.gradle.Main1.main(Main1.java:36)
Caused by: org.apache.openejb.OpenEJBException: Creating application failed: 
C:\DRWP\Workspace-Aug\OpenEJB-QuickStart: couldn't start owb context
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:836)
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:546)
        at 
org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:368)
        ... 2 more
Caused by: org.apache.openejb.OpenEJBRuntimeException: couldn't start owb 
context
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:169)
        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:43)
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:723)
        ... 4 more
Caused by: org.apache.openejb.OpenEJBRuntimeException: 
java.lang.RuntimeException: 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
        at 
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:316)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:167)
        ... 6 more
Caused by: java.lang.RuntimeException: 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
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.initialize(CDIExtension.java:196)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.beforeBeanDiscovery(CDIExtension.java:297)
        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 
org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:295)
        at 
org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:429)
        at 
org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:484)
        at 
org.apache.openejb.cdi.BeansDeployer.fireBeforeBeanDiscoveryEvent(BeansDeployer.java:153)
        at 
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:193)
        ... 7 more
Caused by: 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
        at 
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
        at 
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
        at 
javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
        at javax.naming.InitialContext.getNameParser(InitialContext.java:480)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.diveIntoJNDIContext(CDIExtension.java:264)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.createJerseyConfigJNDIContext(CDIExtension.java:273)
        at 
com.sun.jersey.server.impl.cdi.CDIExtension.initialize(CDIExtension.java:192)
        ... 17 more

Reply via email to