2016-06-23 8 views
3

tomme.xml에 연결 풀을 구성했습니다. 그래서 나는 다른 연결 풀을 shiro.ini에 설정해서는 안된다고 생각합니다. 대신 간단히 연결 풀을 tomme.xml, shiro.ini에서 가리킬 수 있습니다. 어떻게해야합니까? 여기shiro.ini에서 tomee.xml 연결 풀을 가리키는 방법

<?xml version="1.0" encoding="UTF-8"?> 
<tomee> 
    <!-- see http://tomee.apache.org/containers-and-resources.html --> 

    <!-- activate next line to be able to deploy applications in apps --> 
    <!-- <Deployments dir="apps" /> --> 


    <Resource id="testDatabase" type="DataSource"> 
    accessToUnderlyingConnectionAllowed = false 
    alternateUsernameAllowed = false 
    connectionProperties = 
    defaultAutoCommit = true 
    defaultReadOnly = 
    definition = 
    ignoreDefaultValues = false 
    initialSize = 0 
    jdbcDriver = com.teradata.jdbc.TeraDriver 
    jdbcUrl = jdbc:teradata://XXXXXX,tmode=TERA,charset=UTF8,RECONNECT_COUNT=11 
    jtaManaged = true 
    maxActive = 20 
    maxIdle = 20 
    maxOpenPreparedStatements = 0 
    maxWaitTime = -1 millisecond 
    minEvictableIdleTime = 30 minutes 
    minIdle = 0 
    numTestsPerEvictionRun = 3 
    password = XXXXXXXXXX 
    passwordCipher = PlainText 
    poolPreparedStatements = false 
    serviceId = 
    testOnBorrow = true 
    testOnReturn = false 
    testWhileIdle = false 
    timeBetweenEvictionRuns = -1 millisecond 
    userName = XXXXX 
    validationQuery = 
    </Resource> 


</tomee> 
shiro.ini

가있다 tomee.xml

는 여기에있다. 나는 shiro.ini 내에서 jdbcRealm을 구성 할 수 shiro.ini

[main] 
# This does not work 
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm 
dataSource = org.apache.shiro.jndi.JndiObjectFactory 
dataSource.resourceRef = true 
dataSource.resourceName = "testDatabase" 
jdbcRealm.dataSource = $dataSource 
jdbcRealm.permissionsLookupEnabled = true 

# Configure JDBC realm SQL queries. 
jdbcRealm.authenticationQuery = SELECT XXX 
jdbcRealm.userRolesQuery = SELECT XXX) 

[urls] 
/login.xhtml = user 
/app/** = user 

jdbcRealm을 구성해야하지만 tomee.xml에 이미 존재하는 연결 풀을 구현하려는. 어떻게해야합니까?

답변

2

Shiro의 전문가는 아니지만 tomee.xml 구성 (매우 자세한 내용)은 작동해야합니다. 접근 방식이 정확하고 응용 프로그램에서 데이터베이스 풀을 정의하지 말고 서버 자체에서 정의하십시오.

여기 허용 대답을 살펴 보자 How to configure JDBCRealm to obtain its DataSource from JNDI

을 그리고 그 대답에 두 의견에주의를 기울이십시오. 건배!

1

당신이 그것을 직접 추가 할 수 있도록 데이터 소스가 JNDI지도에없는 것 같다

securityManager.realm = $jdbcRealm 
1

을 시도합니다. DataSource ID (이 경우 'testDatabase')를 통해이 작업을 수행해야합니다. 당신이 아닌 내가 비 JTA 데이터 소스를 사용하는 것을 선호

@Resource(name="testDatabase", type=javax.sql.DataSource.class) 

이 경우 : 시작 EJB에서 다음

<resource-ref> 
    <res-ref-name>testDatabase</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
</resource-ref> 

이나 넣어 : 나는 web.xml 파일에 다음을 넣어 예를 들어 여러 가지 방법이 있습니다 -jta DataSource ID는 'testDatabaseNonJta'여야합니다. 는 잘 모르겠어요하지만 라인을 다음과 같은 것은 시로에 대한 문제가 발생할 수 있습니다

accessToUnderlyingConnectionAllowed = false 
1
tomee.xml의 자원의

JNDI 이름은 "OpenEJB를 : 자원/ID가"직접 글로벌 이름과 자바와 액세스를 정의 : 글로벌/....