Jdbc 如何从运行在Linux上的Jasper服务器对SQL Server使用Windows身份验证

Jdbc 如何从运行在Linux上的Jasper服务器对SQL Server使用Windows身份验证,jdbc,active-directory,jasper-reports,jasperserver,Jdbc,Active Directory,Jasper Reports,Jasperserver,我在Linux上运行Jasper服务器4.5.0 64位 Jasper服务器插入的许多数据源中有一个是没有本地SQL身份验证参数的SQL服务器 如何使用Active Directory帐户而不是本地SQL帐户连接到数据库 假设:远程IP是sql server绑定到端口1433侦听tcp/IP流量的IP地址。数据库名是jasper 我们将使用名为的产品来连接SQL Server,而不是使用普通的ole sqljdbc.jar驱动程序来连接SQL Server。这是因为它允许JDBC使用Window

我在Linux上运行Jasper服务器4.5.0 64位

Jasper服务器插入的许多数据源中有一个是没有本地SQL身份验证参数的SQL服务器


如何使用Active Directory帐户而不是本地SQL帐户连接到数据库

假设:远程IP是sql server绑定到端口1433侦听tcp/IP流量的IP地址。数据库名是jasper

我们将使用名为的产品来连接SQL Server,而不是使用普通的ole sqljdbc.jar驱动程序来连接SQL Server。这是因为它允许JDBC使用Windows身份验证模式而不是SQL模式连接到SQL server

步骤:

1) 安装jasper服务器4.5.x

2) 获取jTDS 1.2.5(或任何最新版本)

您可能已经注意到jTDS包中有一些DLL。别担心!该驱动程序在Linux中仍然有效。当然,你不能像Windows那样在Linux中进行单点登录

将jtds-*.jar提取到$jasperserver/apachetomcat/lib

3) 编辑
$jasperserver/apachetomcat/conf/Catalina/localhost/jasperserver.xml
并在
之前添加以下元素

5) 创建一个新的数据库名“jasper”,并向您希望使用的Active Directory帐户授予读取*权限

6) 出于测试目的运行此脚本:

create table test (test varchar(50) NULL) 
insert into test values ('1')
insert into test values ('2')
insert into test values ('3')
7) 创建一个新的JSP文件
$jasperserver/apachetomcat/webapps/jasperserver/test.JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/sqlserver">
  select test from test
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>
    <h2>Results</h2>

    <c:forEach var="i" items="${rs.rows}">
      Text Message: <c:out value="${i.test}"/><br>
    </c:forEach>
  </body>
</html>

从测试中选择测试
分贝试验
结果
短信:
8) 启动jasperserver的tomcat。登录并测试
http://localhost:8080/jasperserver/test.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/sqlserver">
  select test from test
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>
    <h2>Results</h2>

    <c:forEach var="i" items="${rs.rows}">
      Text Message: <c:out value="${i.test}"/><br>
    </c:forEach>
  </body>
</html>
您应该看到测试表中的第1、2和3行

如果它不起作用。。。回顾前面的步骤,看看哪里出了问题

9) 只需转到:Datasources->newdatasource->Type:JNDI数据源,即可创建一个jasperserverjndi数据源。->JNDI查找是:
/jdbc/sqlserver


创建表并测试报告

我没有使用Jasper,但我能够使用AD帐户通过SQL Server进行身份验证,但我必须使用JTDS驱动程序。令人惊讶的是,我不能直接使用MS SQL JDBC驱动程序。
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/sqlserver">
  select test from test
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>
    <h2>Results</h2>

    <c:forEach var="i" items="${rs.rows}">
      Text Message: <c:out value="${i.test}"/><br>
    </c:forEach>
  </body>
</html>