| Aurora????Birt??2012-02-01 12:37:18by bobbie.zou Table of Contents 下面的示例以Tomcat作为应用服务器,以hap作为Aurora应用的上下文。Birt应用配置,指的是部署birt的tomcat;Aurora应用配置,指的是部署Aurora应用的tomcat。其他应用服务器如weblogic和websphere的部署,请参考此文档以及相关应用服务器下面的安装部署文档。 下载BIRT3.7以上版本的Runtime 下载地址 (Birt2.x版本在使用动态sql时有内存回收bug,所以推荐birt3.7版本以后的版本)
conf目录下server.xml文件的全局命名资源GlobalNamingResources元素内添加一项Resource属性
<GlobalNamingResources>
<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<!--Editable user database that can also be used by UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<!-- 新添加的Resource -->
<Resource name="jdbc/plm"
type="javax.sql.DataSource"
password="plm"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxIdle="10"
maxWait="3000"
username="plm"
url="jdbc:oracle:thin:@10.26.99.101:1521:JXCPLM"
maxActive="100"/>
</GlobalNamingResources>
Table 1. Resource标记属性
数据源配置完成后,还须配置相关的上下文信息context,来使程序获得JDNI初始化引用,从而定位数据源。由于之前定义的是全局资源,我们可在Context元素中加入关联属性: <Context path="/hap" docBase="[realPath]/birtViewer" crossContext="true" debug="0" reloadable="false"> <ResourceLink name="jdbc/plm" global="jdbc/plm" type="javax.sql.DataSource"/> </ Context> 在birtViewer/WEB-INF/web.xml文件尾部添加 <resource-ref> <res-ref-name>jdbc/plm</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 下面提供一个jsp文件测试数据源是否配置成功,此jsp文件必须放置在birtViewer目录下
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Oracle JDBC Test</title>
</head>
<body>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData md = null;
try{
Context initCtx=new InitialContext();
//获得JNDI初始化上下文信息,即获取目录上下文的引用
DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/plm");
//定位数据源jdbc/plm
if(ds!=null){
out.println("get DataSource");
out.println(ds.toString());
conn=ds.getConnection();
if(conn!=null){
out.println("create connection sucess!");
stmt=conn.createStatement();
out.println("createStatement Success!");
//查询sql
rs=stmt.executeQuery("select * from sys_service");
md=rs.getMetaData();
out.println("<table border=1>");
out.println("<tr>");
for(int i=0;i<md.getColumnCount();i++){
out.println("<td>"+md.getColumnName(i+1)+"</td>");
}
while(rs.next()){
out.println("<tr>");
out.println("<td>"+rs.getString(1)+"</td>");
out.println("<td>"+rs.getString(2)+"</td>");
out.println("<td>"+rs.getString(3)+"</td>");
out.println("<td>");
}
out.println("</table>");
}
}
}catch(Exception e){
out.println(e.toString());
System.out.println(e.toString());
}finally{
try{
if(conn != null)
conn.close();
}catch(Exception e1){
}
try{
if(stmt != null)
stmt.close();
}catch(Exception e2){
}
try{
if(rs != null)
rs.close();
}catch(Exception e3){
}
}
%>
</body>
</html>
修改../hap/WEB-INF/web.xml文件,添加如下代码 <servlet> <servlet-name>birtForward</servlet-name> <servlet-class>aurora.application.features.HttpForward</servlet-class> <init-param> <param-name>address</param-name> <!--必须定义到birtviewer的servlet监听地址--> <param-value>http://127.0.0.1:8090/hap/preview</param-value> </init-param> <init-param> <!--验证访问权限proc,如果不配置此参数,自动跳过验证--> <param-name>procedure</param-name> <param-value>birt.access_check</param-value> </init-param> <init-param> <!--Bm验证结果的返回路径,验证失败返回的是错误信息,验证成功返回null--> <param-name>output</param-name> <param-value>/birt/@return</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>birtForward</servlet-name> <url-pattern>/preview</url-pattern> </servlet-mapping> <?xml version="1.0" encoding="UTF-8"?> <p:procedure xmlns:a="http://www.aurora-framework.org/application"> <a:model-execute model="birt.access_check"/> </p:procedure> <?xml version="1.0" encoding="UTF-8"?> <bm:model xmlns:bm="http://www.aurora-framework.org/schema/bm"> <bm:operations> <bm:operation name="execute"> <bm:parameters> <bm:parameter name="return_value" dataType="java.lang.String" input="false" output="true" outputPath="/birt/@return" required="false"/> </bm:parameters> <bm:update-sql> begin ${@return_value}:= SYS_REPORT_AUTHOR_PKG.check_report_author(${/session/@user_id},${/parameter/@param}); end; </bm:update-sql> </bm:operation> </bm:operations> </bm:model>
Demo |

Comments
0 Responses to the article暂时没有评论。