- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经浏览了关于上述主题的所有帖子,但未能解决这个问题。情况是这样的:
1)我在Tomcat 8.0.20的conf/server.xml(GlobalNamingResources)中定义了一组资源2) 我已经在 tomcat conf/context.xml 中声明了 ResourceLink3) 从 Web 应用程序中我得到名称未绑定(bind)异常。
根据我的理解,如果 server.xml 中声明的资源被映射到 ResourceLink 中,则可以从上下文访问它,现在 conf/context.xml 已为所有 Web 应用程序加载并且资源应该可用但是他们不是。我错过了什么吗?
以下是文件:
异常
javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context
. Unable to find [comp].
at org.apache.naming.NamingContext.lookup(NamingContext.java:818)
at org.apache.naming.NamingContext.lookup(NamingContext.java:166)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:157)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at com.hm.vigil.platform.db.DatabaseConnectionManager.<init>(DatabaseConnectionManager.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
服务器.xml
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
-->
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="pool/LDAP"
auth="Container"
type="com.hm.vigil.platform.ldap.LDAPConnectionManager"
factory="com.hm.vigil.platform.ldap.LDAPConnectionManager"
singleton="true"
closeMethod="closeLDAPConnectionManager"/>
<Resource name="platform/ZOOKEEPER"
auth="Container"
type="com.hm.vigil.platform.config.PlatformConfigManager"
factory="com.hm.vigil.platform.config.PlatformConfigManager"
singleton="true"
closeMethod="closeZookeeperConfigRetriever"/>
<Resource name="pool/DB_CLIENT"
auth="Container"
type="javax.sql.Datasource"
factory="com.hm.vigil.platform.db.DatabaseConnectionManager"
singleton="true"
closeMethod="closeDatabaseConnectionManager"/>
<Resource name="platform/client/CONFIG_MANAGER"
auth="Container"
type="com.hm.vigil.platform.config.ClientConfigManager"
factory="com.hm.vigil.platform.config.ClientConfigManager"
singleton="true"
closeMethod="closeClientConfigManager"/>
<Environment name="zooKeeperHost"
type="java.lang.String"
value="localhost"
override="false"/>
<Environment name="zookeeperPort"
type="java.lang.String"
value="2181"
override="false"/>
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
a single "Container" Note: A "Service" is not itself a "Container",
so you may not define subcomponents such as "Valves" at this level.
Documentation at /docs/config/service.html
-->
<Service name="Catalina">
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
This connector uses the NIO implementation that requires the JSSE
style configuration. When using the APR/native implementation, the
OpenSSL style configuration is required as described in the APR/native
documentation -->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
<!--For clustering, please take a look at documentation at:
/docs/cluster-howto.html (simple how to)
/docs/config/cluster.html (reference documentation) -->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<!-- Use the LockOutRealm to prevent attempts to guess user passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<!-- <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/> -->
<Realm className="org.apache.catalina.realm.JNDIRealm"
connectionURL="ldap://localhost:10389"
connectionName="uid=admin,ou=system"
connectionPassword="secret"
userBase="cn=PLATFORM_CLIENTS,cn=PLATFORM_CONFIG,dc=example,dc=com"
userSubtree="true"
userSearch="(&(objectClass=user)(email={0})(userClass=ACTIVE))"
userRoleName="userRole"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> -->
<Valve className="org.apache.catalina.ha.authenticator.ClusterSingleSignOn" />
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<!-- <Context>
<Environment name="zooKeeperHost"
type="java.lang.String"
value="localhost"
override="false"/>
<Environment name="zookeeperPort"
type="java.lang.String"
value="2181"
override="false"/>
</Context> -->
</Host>
</Engine>
</Service>
</Server>
context.xml
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- <Environment name="zooKeeperHost"
type="java.lang.String"
value="localhost"
override="false"/> -->
<ResourceLink name="zooKeeperHost"
global="zooKeeperHost"
type="java.lang.String"/>
<!-- <Environment name="zookeeperPort"
type="java.lang.String"
value="2181"
override="false"/> -->
<ResourceLink name="zookeeperPort"
global="zookeeperPort"
type="java.lang.String"/>
<!-- <Resource name="pool/LDAP"
auth="Container"
type="com.hm.vigil.platform.ldap.LDAPConnectionManager"
factory="com.hm.vigil.platform.ldap.LDAPConnectionManager"
singleton="true"
closeMethod="closeLDAPConnectionManager"/> -->
<ResourceLink name="pool/LDAP"
global="pool/LDAP"
type="com.hm.vigil.platform.ldap.LDAPConnectionManager"/>
<!-- <Resource name="platform/ZOOKEEPER"
auth="Container"
type="com.hm.vigil.platform.config.PlatformConfigManager"
factory="com.hm.vigil.platform.config.PlatformConfigManager"
singleton="true"
closeMethod="closeZookeeperConfigRetriever"/> -->
<ResourceLink name="platform/ZOOKEEPER"
global="platform/ZOOKEEPER"
type="com.hm.vigil.platform.config.ZookeeperConfigRetriever"/>
<!-- <Resource name="pool/DB_CLIENT"
auth="Container"
type="javax.sql.Datasource"
factory="com.hm.vigil.platform.db.DatabaseConnectionManager"
singleton="true"
closeMethod="closeDatabaseConnectionManager"/> -->
<ResourceLink name="pool/DB_CLIENT"
global="pool/DB_CLIENT"
type="javax.sql.Datasource"/>
<!-- <Resource name="platform/client/CONFIG_MANAGER"
auth="Container"
type="com.hm.vigil.platform.config.ClientConfigManager"
factory="com.hm.vigil.platform.config.ClientConfigManager"
singleton="true"
closeMethod="closeClientConfigManager"/> -->
<ResourceLink name="platform/client/CONFIG_MANAGER"
global="platform/client/CONFIG_MANAGER"
type="com.hm.vigil.platform.config.ClientConfigManager"/>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname="" />
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>
谢谢
最佳答案
我将发布我对上述问题的发现。
问题是一个/多个资源具有对绑定(bind)到 JNDI 树的另一个资源的内部引用。因此,在创建资源期间,其他资源会尝试解析公共(public)资源的 JNDI 树。现在,在加载上下文时,该上下文的 JNDI 树实际上并不存在,因此出现上述错误。
解决方法是在公共(public)资源上声明一个工厂方法,并通过工厂方法从其他资源获取对公共(public)资源的引用。
因此,作为一般原则,我认为资源不能从 JNDI 解析其他资源。
关于java - Tomcat JNDI 资源不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875188/
有人告诉我,如果我只有一个“东西”,比如家(不是多个家),我应该在 routes.rb 中使用资源 :home,而不是资源 :home。但是当我查看路由时,POST 函数似乎想要 home#creat
Activity 开始。这些代码框架顺利通过。 // Initialize array adapters. One for already paired devices and //
资源 search-hadoop.com search-hadoop.com索引所有邮件列表,非常适合历史搜索。当你遇到问题时首先在这里搜索,因为很可能有人已经遇到了你的问题。 邮件列表 在A
我是 WPF 的新手,正在努力使用位于单独程序集中的样式。这就是我正在做的:- 我有一个带有\Themes 文件夹的类库项目,其中包含一个“generic.xaml”,它合并了\Themes 内的子文
我正在编写一个使用虚拟树状文件结构的插件。基本上它就像一个包含文件的标准文件系统,区别在于这些文件实际上并不存在于文件系统中的特定位置,而只是 java 对象。 这些当前由使用 SettingProv
如果我在 XAML 中使用以下内容,我会收到错误消息: 错
我正在使用 laravel 资源来获取 api 的数据: return [ 'id' => $this->id, 'unread' =>
我有以下 pom.xml: 4.0.0 mycompany resource-fail 0.0.1-SNAPSHOT BazBat
许多GDI +类都实现IDisposable,但是我不确定何时应该调用Dispose。对于使用new或静态方法(例如Graphics.CreateGraphics)创建的实例来说,这很明显。但是,由属
我正在构建一组 RESTful 资源,其工作方式如下:(我将使用“people”作为示例): 获取/people/{key} - 返回一个人对象 (JSON) GET/people?first_nam
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一个使用 $resource 的简单 Controller : var Regions = $resource('mocks/regions.json'); $scope.regions =
在 Azure 门户中,如何查看不同资源之间的依赖关系。我特别想查看哪些资源正在使用我要删除的存储。 最佳答案 您可以使用应用程序洞察应用程序 map 来执行此操作: 您还可以打开存储帐户的日志记录:
我正在使用 ionic 生成资源(图标和启动画面)。我正在使用 ionic v2.1.0 和 cordova v6.4.0。 到目前为止我一直在使用(它在以前的版本中工作): cordova plat
是否可以使用 Assets 包含子文件夹中的文件? 示例:[base_url]/assets/css/pepper-grinder/jquery-ui-1.8.11.custom.min.css 最佳
我正在阅读一些尝试教授 Android 开发的书。在书中,作者概述了 res/下的一些目录。他提到 res/menu 包含基于 XML 的菜单规范。他还提到了保存“通用文件”的 res/raw。当我创
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在服务器上使用 express-resource。在我的 AngularJS Controller 中: var User = $resource('/services/users/:use
因此,每当我运行我的应用程序时,它都会立即崩溃并给出以下错误: No package identifier when getting value for resource number 0x00000
对于我正在创建的(网络)应用程序,我需要使用基本身份验证在我的 UIWebView 中加载页面。 现在设置我使用的授权 header : NSString *result = [NSString st
我是一名优秀的程序员,十分优秀!