1

I have tried many different ways to fix this issue but it is throwing error as below. We are using CXF Framework to write web services and read data source from context.xml file. It works fine for data source which connects to database or other system source as well but doesn't work for data source con/TestAPI that i am trying to add now. Not sure what is the issue here.

Please help.

FATAL Failed to init resources.
javax.naming.NamingException: Cannot create resource instance
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:146)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
    at com.us.test.ws.TestImpl.<init>(TestImpl.java:57)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
Sep 24, 2014 5:21:01 PM org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be /WSTest/rest
Sep 24, 2014 5:21:01 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {http://ws.test.us.com/}TestImplService from class com.idms.us.test.ws.TestImpl
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    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:619)

Below is the source that i have defined in my context.xml file. Just want to mention that

<Resource SESSIONFACTORY_NAME="session/SessionFactory" 
           factory="com.dal.controlcenter.factory.ControlCenterFactory"
           name="session/ControlCenterFactory"
           type="SessionControlCenter"/>

    <Resource
        scheme="https" host="test-fe5.testnetdata.com" port="8291"
        username="user"
        password="password"
        name="con/TestAPI"
        type="java.util.HashMap"/>


<Resource name="jdbc/dataSource" auth="Container"
              type="javax.sql.DataSource"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://somehost:3306/db_database?useOldAliasMetadataBehavior=true"
              username="user"
              password="!password!"
              maxActive="10"
              maxIdle="1"
              maxWait="120000"
              testWhileIdle="true"
              timeBetweenEvictionRunsMillis="10000"
              minEvictableIdleTimeMillis="60000"
              removeAbandoned="true"
              removeAbandonedTimeout="300"
              noAccessToProcedureBodies="true"
              />

Below is what i have defined web.xml of my project.

<resource-ref>
  <description>
    some description
  </description>
  <res-ref-name>
    con/TestAPI
  </res-ref-name>
  <res-type>
    java.util.HashMap
  </res-type>
  <res-auth>
    Container
  </res-auth>
</resource-ref>

Below is the code on my java class.

try{
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    splunkAPIConnectionMap = (HashMap) envCtx.lookup("con/TestAPI");
}catch (NamingException ex){
    log.fatal("Failed to init resources.", ex);
}        
user3314492
  • 233
  • 5
  • 17
  • Where is the rest of the stack trace? The problem is not with CXF. Your resource declaration should be not working... – DiogoSantana Sep 25 '14 at 05:46
  • I have added full stack trace here. Yes, it looks like resource declaration issue only rather than CXF issue. I have tried many different ways to solve resource declaration issue but no luck. Please help here. – user3314492 Sep 25 '14 at 15:50
  • That's a tomcat issue. I don't know hot to resolve and I didn't know you could have a Resource of type java.util.HashMap fetch from a url. Are you sure this should work? – DiogoSantana Sep 25 '14 at 21:02
  • I have even tried using regular Object resource type and that doesn't work as well. We already have user defined resource type SessionControlCenter declared on context.xml and that works fine so i think any of the resource type should not. If not HashMap than regular Object type should work but that is also giving same error. I have checked on tomcat also where it deploys this context.xml file and tomcat server also has correct value on context.xml but still getting this error. – user3314492 Sep 26 '14 at 06:36

0 Answers0