Question

I'm developing a java web application with Netbeans and maven.

I implemented my own Realm extending class org.apache.catalina.realm.DataSourceRealm.

So, I have a parse error in context.xml caused by java.lang.ClassNotFoundException: com.company.authentication.MyRealm

I fixed this by building the JAR with my Realm and putting in tomcat lib folder.

Is there any way to do this automatically? Ie, make the Tomcat in recognizing my Realm in the deploy or make the "Tomcat Class Loader" load my Realm only with WAR file (or by maven).

My Realm

public class MyRealm extends DataSourceRealm{
    @Override
    public Principal authenticate(String username, String credentials) {

        ...

        //Applying encryption
        credentials = MyEncrypt.encrypt(credentials);

        ... 

        return authenticate(dbConnection, username, credentials);
    }
}

My context.xml file

<Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="10" maxIdle="3" name="jdbc/my_db" password="123456" type="javax.sql.DataSource" url="jdbc:postgresql://localhost:5432/app_web_login" username="postgres" />    
<Realm className="com.company.authentication.MyRealm" dataSourceName="jdbc/my_db" roleNameCol="role_name" userCredCol="user_pass" userNameCol="user_name" userRoleTable="user_roles" userTable="users" localDataSource="true"/>

Part of My pom.xml file

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina</artifactId>
            <version>7.0.42</version>
            <scope>provided</scope>
        </dependency>
        ...
    </dependencies>
Était-ce utile?

La solution

Currently, there is no way to tell Tomcat to look in the web application for your Realm implementation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top