首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将嵌入式Tomcat从v6更改为v7会导致InitialContext查找失败

将嵌入式Tomcat从v6更改为v7会导致InitialContext查找失败
EN

Stack Overflow用户
提问于 2011-05-03 15:07:46
回答 1查看 1.6K关注 0票数 1

我正在使用JUnit测试用例来使用嵌入式Tomcat来测试我的web服务。在Tomcat6下,一切都运行得很好,但当我将项目切换到Tomcat7时,我的问题就来了。

设置嵌入式Tomcat服务器的测试代码如下:

Tomcat 6

代码语言:javascript
运行
复制
Embedded container = new Embedded();
container.setCatalinaHome("C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0.11");
container.setRealm(new MemoryRealm());
container.setName("Catalina");
Engine engine = container.createEngine();
container.addEngine(engine);
Host host = container.createHost("localhost", "/DecoderServiceTest");
Context rootContext = container.createContext("/DecoderServiceTest", System.getProperty("user.dir") + "/build/web");
host.addChild(rootContext);
engine.setName("Catalina");
engine.addChild(host);
engine.setDefaultHost("localhost");
container.addEngine(engine);
Connector connector = container.createConnector(InetAddress.getLocalHost(), 4321, false);
container.addConnector(connector);
container.start();

由于嵌入式API在版本6和版本7之间发生了变化,因此我将自己的代码更改为以下代码:

Tomcat 7

代码语言:javascript
运行
复制
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir("C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0.11");
tomcat.setPort(1234);
tomcat.addWebApp("/DecoderServiceTest", System.getProperty("user.dir")+"/build/web");
tomcat.setHostname("localhost");
tomcat.start();

当我执行JUnit测试时,实际的web服务启动得很好(我可以使用web浏览器并看到提供的服务)。

但是,在我的web服务的构造函数中,我根据web.xml文件(位于System.getProperty("user.dir")+"/build/web/WEB-INF/web.xml"中)中的值初始化了一些变量,如下所示:

代码语言:javascript
运行
复制
  Context initCtx = new InitialContext();
  Context envCtx = (Context) initCtx.lookup("java:comp/env");
  int thumbnailSize = (Integer) envCtx.lookup("thumbnail-pixel-size");

其中,我的web.xml文件包含以下条目:

代码语言:javascript
运行
复制
<env-entry>
  <env-entry-name>thumbnail-pixel-size</env-entry-name>
  <env-entry-type>java.lang.Integer</env-entry-type>
  <env-entry-value>64</env-entry-value>
</env-entry>

当我尝试创建envCtx对象时,我得到一个带有消息Name java:comp is not bound in this ContextNamingException。我很困惑,因为它在Tomcat6上工作得很好。我是不是错过了Tomcat7的设置中我之前在Tomcat6的设置中定义的一些东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-04 07:36:41

Mark Thomas通过tomcat用户邮件列表suggested

代码语言:javascript
运行
复制
tomcat.enableNaming();

在服务器启动之前。这对我很有效(我猜他们在6到7之间改变了默认行为)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5866237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档