我最近开始编写JSF应用程序。我使用ecplise neon和maven3以及jetty webserver进行快速测试部署。到目前为止一切都很好,但现在我想尝试apache shiro,因为它似乎是一个非常酷和良好的安全框架。
现在,因为我使用ms sql server我使用jtds db驱动程序。但不幸的是,由于以下错误,我无法使shiro工作:
[警告]上下文启动失败oejmpJettyWebAppContext @ 6ea04618 {/,[file:/// E:/ Dev / JSF / Lister / Lister / src / main / webapp /,jar:file:/// C: /Users/Dethrall/.m2/repository/com/sun/faces/jsf-impl/2.2.2/jsf-impl-2.2.2.jar!/META-INF/resources],UNAVAILABLE}{file:/// E:/开发/ JSF /制表/制表/ src目录/主/ web应用/} org.apache.shiro.config.ConfigurationException:对于net.sourceforge.jtds.jdbcx.JtdsDataSource类型的对象,属性'database'不存在。
特别有趣的是“属性'数据库'部分不存在......” 所以我查看了相应的javadoc,确实没有属性数据库。
这让我们回到了我的问题。我应该如何在shiro.ini中配置jtds数据源。如果有人有任何建议,将不胜感激!
对不起btw因为我对maven,jsf,shiro,jetty等所有新东西感到有些不知所措......
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
</web-app>
的pom.xml
...
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>${shiro.version}</version>
</dependency>
...
shiro.ini
[main]
#authc = org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter
authc.loginUrl = /faces/login.xhtml
authc.successUrl = /faces/users.xhtml
logout.redirectUrl = /faces/users.xhtml
ds = net.sourceforge.jtds.jdbcx.JtdsDataSource
ds.serverName = localhost
ds.portNumber = 1434
ds.user = lister
ds.password = 1234
ds.database = Lister
sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.authenticationQuery = SELECT password FROM trs_sec_t_users WHERE username = ?
jdbcRealm.userRolesQuery = SELECT role FROM trs_sec_t_roles WHERE username = ?
#jdbcRealm.credentialsMatcher = $sha256Matcher
[users]
#admin = admin, ROLE_ADMIN
#root = 1234, ROLE_ADMIN
[roles]
#ROLE_ADMIN = *
[urls]
/faces/users.xhtml = authc
答案 0 :(得分:1)
在shiro.ini中,尝试:&#39; ds.database 名称 = Lister&#39;