我已经阅读了文档,并使用JNDI资源(jdbc/foo4)创建了一个数据库连接。这个资源可以工作(我已经在我的应用程序中使用它来检索数据)。这似乎不起作用,是一个领域与这个资源的链接。
我的配置文件如下所示:
src\main\webapp\meta-inf\context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/my-webapp">
<!-- works! -->
<Resource name="jdbc/foo4"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/foo4"
username="root"
password="root"
maxActive="8"
maxIdle="4"
maxWait="10000"
auth="Container"
/>
<!-- Does not seem to work?! -->
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/foo4"
userTable="users"
userNameCol="user_name"
userCredCol="user_pass"
userRoleTable="user_roles"
roleNameCol="role_name"/>
</Context>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<security-constraint>
<display-name>General Restriction</display-name>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<description>All resources in this application are protected.</description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Administration Area</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
<resource-ref>
<res-ref-name>jdbc/foo4</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
创建表user_roles(user_name varchar(15)not null,
role_name varchar(15)not null,主键(user_name,role_name));
在用户(user_name,user_pass)中插入值('benny'、'test');插入user_roles(user_name,role_name)值('benny'、'admin');
但是我不能用用户“Benny”和密码“Test”登录。我可以使用用户“tomcat”和密码“tomcat”登录(因为它是在%catalina_home%\conf\tomcat-users.xml中定义的),但我不能使用我自己的用户从我的MySQL数据库登录。
当我尝试登录时,我得到以下错误消息:
Sep 08, 2012 7:38:55 PM org.apache.catalina.realm.DataSourceRealm open
Exception performing authentication
javax.naming.NameNotFoundException: Name [jdbc/foo4] is not bound in this Context. Unable to find [jdbc].
有人看到错误了吗?
默认情况下,领域将始终查找全局数据源(在Tomcat端/conf/server.xml
中配置),但是您已经定义了本地数据源(在webapp端配置在相同的/meta-inf/context.xml
中),因此领域找不到数据源。您需要将LocalDataSource
属性设置为true
。
<Realm ... localDataSource="true" />
另请参见Tomcat 7.0领域文档:
LocalDataSource
问题内容: 我正在尝试使用JavaFX中的WebView入门,但是当尝试打开WebView时,我收到以下所示的错误,我该如何解决此问题? 问题答案: 尝试运行WebView时遇到任何错误时,请确保您的VM选项包含模块javafx.web。 虚拟机选项: 在IntelliJ中,您可以通过转到IDE右上方的“编辑配置”按钮来访问VM选项。
问题内容: 我已经使用数据库中的SQL数据库开发了一个窗口服务,该数据库中的记录已满,因此查询执行需要很多时间,而默认命令超时是30S,但我想将其增加到120S。 但是我的应用程序中有很多方法,因此我想从APP.config文件中进行设置,这样它将适用于应用程序级别,任何人都可以告诉我如何实现此目标 谢谢 问题答案: 实现此目的的最简单方法是在类似以下内容的地方添加新条目: 然后,创建一个将填充值
问题内容: 我有一个模型: 如何编写基于类的视图,该视图创建新的模型实例并将外键设置为? 问题答案: 我通过覆盖方法解决了这个问题。下面是详细说明的样式: 但是我们可以简短地说(感谢dowjones123),在docs中提到了这种情况。
问题内容: 我试着把这2行 在我的根.htaccess文件中,但这给我带来“内部服务器错误”消息… php5正在服务器上运行, 我无权访问php.ini,因此我认为htaccess是我唯一的机会。 你能告诉我哪里错了吗? 提前致谢 问题答案: 是正确的。 您将必须与您的托管服务商联系-有些不允许您更改php.ini中的值
我希望从服务器加载数据并显示到我的应用程序中(
我想将JBoss5中的JVM选项设置为: 我怎么能这么做? ...22:12:32,015错误[ProfileServiceBootstrap]未能加载配置文件:org.jboss.deployers.spi.deploymentException.rethrowsdeploymentException.restrowasdeploymentException(deploymentExceptio