我正在配置Tomcat 6中的DatasourceRealm
配置META-INF/context.xml
中的一切。web.xml
似乎配置正确,因为登录提示显示。
有人能帮忙吗?
context.xml
<Context >
<Resource name="jdbc/auth" description="authentication" type="javax.sql.DataSource"
auth="Container" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
maxActive="25" maxIdle="10" maxWait="10000"
url="jdbc:sqlserver://SQLSERVER;databaseName=db;integratedSecurity=true"
validationQuery="select 1" />
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/auth" userTable="WebUsers" userNameCol="username"
userCredCol="password" userRoleTable="WebUserRoles" roleNameCol="role"
localDataSource="true"/>
</Context>
堆栈 javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
我找到了问题所在。在$CATALINA_BASEconfCatalinalocalhost下,有另一个[应用程序名称].xml文件较旧(它没有localDatasource="true"标志),并且没有我发布的相同配置。我删除了那份文件,重新部署了我的战争。
在进行部署时,我们遇到了如下所示的问题。起初,我们假定这是setenv.sh和conpass文件的问题(属性文件和密码是在这里合并的),然而,在一次重新部署每个文件之后,我们将问题隔离到导致问题的MasterFile。更具体地说,问题本身是一个错误的指示器,因为编码或部署本身并没有什么问题。抛出这个问题是因为我们在Tomcat webapps目录中有备份MasterFile目录。在这样做时,它创建了以下严重错误:
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'datasource' defined in ServletContext resource [/WEB-INF/beans.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name [jdbc/CRIDB] is not bound in this Context. Unable to find [jdbc].
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338).
抛出这个错误是因为我们有多个目录,当启动服务器时,tomcat试图读取每个目录。一旦我们删除了备份主文件目录,问题就解决了