| 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暂时没有评论。