2

我在 Linux 上运行 Jasper Server 4.5.0 64 位。

Jasper Server 插入的众多数据源之一是没有可用的本地 SQL 身份验证参数的 SQL Server。

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

4

1 回答 1

3

假设: REMOTE_IP 是 sql server 绑定到端口 1433 监听 tcp/ip 流量的 ip 地址。数据库名称是jasper

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

脚步:

1)安装碧玉服务器4.5.x

2)获取 jTDS 1.2.5(或任何最新的应该工作)。

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

将 jtds-*.jar 解压到 $jasperserver/apache-tomcat/lib

3)编辑$jasperserver/apache-tomcat/conf/Catalina/localhost/jasperserver.xml并在之前添加以下元素</Context>

<Resource name="jdbc/sqlserver"
             auth="Container"
             type="javax.sql.DataSource"
             driverClassName="net.sourceforge.jtds.jdbc.Driver"
             url="jdbc:jtds:sqlserver://REMOTE_HOST:1433;DatabaseName=jasper;useCursors=false;domain=COM;username=Administrator;password=XXXXXXX;user=Administrator"
             user="Administrator"
             password="XXXXXXX"
             maxActive="20"
             maxIdle="20"
             maxWait="60000"
             removeAbandoned="true"
             logAbandoned="true"         
             removeAbandonedTimeout="300"
             validationQuery="SELECT 1"/>

4)编辑并为新数据源$jasperserver/apache-tomcat/webapps/jasperserver/WEB-INF/web.xml添加一个新的:<resource-ref>

   <resource-ref>
     <description>Connection Description</description>
     <res-ref-name>jdbc/sqlserver</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
   </resource-ref>

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/apache-tomcat/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

您应该会看到测试表中的第 1、2 和 3 行。

如果它不起作用...查看前面的步骤,看看出了什么问题。

9) 只需转到:数据源 -> 新数据源 -> 类型:JNDI 数据源,即可创建一个 jasper 服务器 JNDI 数据源。-> JNDI 查找是:/jdbc/sqlserver

创建您的表格并测试您的报告。

于 2012-07-09T20:30:01.793 回答