UNCLASSIFIED 

Hi, 

I am trying to embed Tomcat 7.0.11 into my standard web application.
This web application defines some Resource elements in
META-INF/context.xml - yet, Tomcat is not loading this file. 

        tomcat = new Tomcat();
        tomcat.setBaseDir(".");
        tomcat.setPort(8084);
        tomcat.addWebapp("/", System.getProperty("user.dir") +
"/build/web");
        tomcat.setHostname("localhost");
        tomcat.enableNaming();
        tomcat.start(); 

Causes the following error: 

javax.naming.NamingException: Cannot create resource instance
        at
org.apache.naming.factory.ResourceEnvFactory.getObjectInstance(ResourceE
nvFactory.java:117)
        at
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:826)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:145)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:814)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:159)
        at
dsto.adiib.ws.harmoniser.AdiibHarmoniser.<init>(AdiibHarmoniser.java:113
)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorA
ccessorImpl.java:39)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCons
tructorAccessorImpl.java:27)
        at
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at
com.sun.xml.ws.api.server.InstanceResolver.createNewInstance(InstanceRes
olver.java:215)
        at
com.sun.xml.ws.api.server.InstanceResolver.createDefault(InstanceResolve
r.java:180)
        at
com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.jav
a:123)
        at
com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:505)
        at
com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(D
eploymentDescriptorParser.java:253)
        at
com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(Deploymen
tDescriptorParser.java:147)
        at
com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextIn
itialized(WSServletContextListener.java:124)

        at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.j
ava:4681)
        at
org.apache.catalina.core.StandardContext$1.call(StandardContext.java:518
4)
        at
org.apache.catalina.core.StandardContext$1.call(StandardContext.java:517
9)
        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(ThreadPoolExecuto
r.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va:908)
        at java.lang.Thread.run(Thread.java:662) 

Line 113 of AdiibHarmoniser is like so: 

HarmoniserImplConfigBean harmoniserImplConfigBean =
(HarmoniserImplConfigBean)envCtx.lookup(beanName); 

This essentially loads some external beans for me. 

My context.xml looks like so: 

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/AdiibHarmoniser">
  <Resource auth="Container" csdTypeComparatorValue="VIDEO"
csdViewDataModel="NSIL_VIDEO_VIEW" dibTextPath="//video"
factory="org.apache.naming.factory.BeanFactory" harmonise="true"
harmoniserClassName="dsto.adiib.ws.harmoniser.FmvHarmoniser"
name="bean/FmvFactory" subscriptionId="adiibFmvHarmoniser"
type="dsto.adiib.ws.harmoniser.HarmoniserImplConfigBean"/>

  <Resource auth="Container" csdTypeComparatorValue="IMAGERY"
csdViewDataModel="NSIL_IMAGERY_VIEW" dibTextPath="//nitf"
factory="org.apache.naming.factory.BeanFactory" harmonise="true"
harmoniserClassName="dsto.adiib.ws.harmoniser.NitfHarmoniser"
name="bean/NitfFactory" subscriptionId="adiibNitfHarmoniser"
type="dsto.adiib.ws.harmoniser.HarmoniserImplConfigBean"/>

</Context> 

Using normal Tomcat (non embedded) everything works fine. I found a post
similar to my problem here:
http://stackoverflow.com/questions/5238451/jndi-jdbc-data-source-in-embe
dded-tomcat-7, yet this caused a followon exception.

java.lang.NoSuchMethodError:
org.apache.catalina.Context.setConfigFile(Ljava/lang/String;)V 

Any ideas? 

Kind Regards, 

James 

IMPORTANT: This email remains the property of the Department of Defence
and is subject to the jurisdiction of section 70 of the Crimes Act 1914.
If you have received this email in error, you are requested to contact
the sender and delete the email. 


Reply via email to