On my site we are using MS SQL Server as the backend of James 2.3.1, before
forced to use Windows Integrated Authentication we use SQL Logins to let James
login into SQL Server, the configure section is as follows:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
<driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
<dburl>jdbc:sqlserver://localhost;databaseName=James; </dburl>
<user>test</user>
<password>test</password>
<max>20</max>
</data-source>
When using Windows Integrated Authentication we change the configure as follows:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
<driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
<dburl>jdbc:sqlserver://localhost;databaseName=James;integratedSecurity=true</dburl>
<max>20</max>
</data-source>
We also change the source code of JdbcDataSource.java to allow not setting
<user> and <passowrd> elements as follows:
public void configure(final Configuration configuration)
throws ConfigurationException {
//Configure the DBCP
try {
String driver = configuration.getChild("driver").getValue(null);
Class.forName(driver);
String dburl = configuration.getChild("dburl").getValue(null);
String user = null;
String password = null;
try{
user = configuration.getChild("user").getValue(null);
password = configuration.getChild("password").getValue(null);
}catch(Exception ex){
user = null;
password = null;
}
……..
source.setDriverClassName(driver);
source.setUrl(dburl);
if (user != null && password != null){
source.setUsername(user);
source.setPassword(password);
}
James failed to start using the latter configure and the new code, the error
message is:
STATUS | wrapper | 2007/11/26 16:50:13 | --> Wrapper Started as Service
STATUS | wrapper | 2007/11/26 16:50:13 | Launching a JVM...
INFO | jvm 1 | 2007/11/26 16:50:13 | Wrapper (Version 3.2.0)
http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2007/11/26 16:50:13 |
INFO | jvm 1 | 2007/11/26 16:50:13 |
INFO | jvm 1 | 2007/11/26 16:50:13 | Phoenix 4.2
INFO | jvm 1 | 2007/11/26 16:50:13 |
INFO | jvm 1 | 2007/11/26 16:50:15 | Nov 26, 2007 4:50:15 PM
com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
INFO | jvm 1 | 2007/11/26 16:50:15 | 警告: Failed to load the
sqljdbc_auth.dll
INFO | jvm 1 | 2007/11/26 16:50:15 |
org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleException: Component
named "database-connections" failed to pass through the Starting stage.
(Reason: org.apache.avalon.framework.configuration.ConfigurationException:
Error configurable datasource).
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleHelper.fail(LifecycleHelper.java:354)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:226)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.application.DefaultApplication.startup(DefaultApplication.java:530)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.application.DefaultApplication.doRunPhase(DefaultApplication.java:478)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.application.DefaultApplication.runPhase(DefaultApplication.java:409)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.application.DefaultApplication.start(DefaultApplication.java:180)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.framework.container.ContainerUtil.start(ContainerUtil.java:260)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.kernel.DefaultKernel.startup(DefaultKernel.java:295)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.kernel.DefaultKernel.addApplication(DefaultKernel.java:376)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(DefaultDeployer.java:357)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:542)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:535)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFiles(DefaultEmbeddor.java:520)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployDefaultApplications(DefaultEmbeddor.java:509)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute(DefaultEmbeddor.java:268)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:198)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
java.lang.Thread.run(Thread.java:534)
INFO | jvm 1 | 2007/11/26 16:50:15 | Caused by:
org.apache.avalon.framework.configuration.ConfigurationException: Error
configurable datasource
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.james.util.dbcp.JdbcDataSource.configure(JdbcDataSource.java:209)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.cornerstone.blocks.datasources.DefaultDataSourceSelector.initialize(DefaultDataSourceSelector.java:147)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.framework.container.ContainerUtil.initialize(ContainerUtil.java:244)
INFO | jvm 1 | 2007/11/26 16:50:15 | at
org.apache.avalon.phoenix.containerkit.lifecycle.LifecycleHelper.startup(LifecycleHelper.java:200)