2015-06-28 16 views
7

Tôi có Jasper Reports Server (được cài đặt trên www.example.com) và một ứng dụng Java/JSP riêng biệt (được cài đặt trên www.example.net) và tôi đang theo đuổi các tùy chọn khác nhau để tạo báo cáo.Thông tin liên lạc giữa Jasper và một ứng dụng khác

Phương án 1 (giải pháp làm việc hiện tại)

giải pháp làm việc hiện tại của tôi là người dùng đăng vào ứng dụng Java/JSP, và chọn một báo cáo. Ứng dụng này tạo ra một đại diện XML của báo cáo, mà nó tiết kiệm như fileNameXML và sau đó nó sau đó gửi nó đến Jasper Reports máy chủ sử dụng mã như sau:

 <IFRAME height="600" width="1000" src="https://www.example.com/jasperserver/flow.html? 
    _flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow& 
    ParentFolderUri=%2Freports& 
    reportUnit=%2Freports%2FExample_Report_2&j_username=user& 
    j_password=password& 
net.sf.jasperreports.xml.source=https://www.example.net/<%=fileNameXML%>">        
    </IFRAME> 

(Lưu ý rằng mặc dù tôi vượt qua một tên người dùng và mật khẩu trong URL, an ninh không bị tổn hại vì filenameXML được tạo ra sử dụng String fileName = UUID.randomUUID().toString() + fileExt;)

Lựa chọn 2

tôi kết nối Jasper Reports máy chủ trực tiếp đến cơ sở dữ liệu SQL Server trên www.example.net, và sản xuất báo cáo theo cách đó. Điểm bất lợi của phương pháp này là (a) Tôi cần phải thiết lập tất cả người dùng trong Jasper Reports (b) Tôi cần truyền các tham số theo cách an toàn để mỗi người dùng chỉ có thể truy cập dữ liệu của họ (c) tôi chỉ có quyền truy cập vào cơ sở dữ liệu, chứ không phải tính toán về ứng dụng của tôi

My Ideal giải pháp

Tuy nhiên tôi thực sự muốn để có thể truy cập vào các tính toán của ứng dụng của tôi qua Jasper, và bỏ qua khai thác gỗ vào ứng dụng của tôi.

Một lợi thế của việc này là ứng dụng của tôi chưa có quyền truy cập di động phù hợp và người dùng có thể tải xuống ứng dụng Ứng dụng di động Jasper và truy cập báo cáo từ đó.

này sẽ bao gồm những điều sau đây:

  1. bản ghi tài khoản thành Jasper
  2. tài chọn báo cáo
  3. Jasper gọi ứng dụng của tôi với các thông số nhất định
  4. ứng dụng tạo ra tập tin xml
  5. ứng dụng trả về một liên kết đến tệp này
  6. Jasper hiển thị báo cáo

cách tốt nhất để đạt được điều này là gì?

Trả lời

0

Tôi nghĩ rằng cách tốt nhất để làm điều này là:.

  • Tạo một URL trong ứng dụng của bạn có thể truy cập bất cứ lúc nào và không cần đăng nhập Nếu bạn đang sử dụng Spring hoặc bất kỳ khuôn khổ khác, trong đó nêu điều đó sẽ tốt như tôi có thể chỉ cho bạn cách làm điều này.

Có rất nhiều cách để làm da mèo này. Hãy cho tôi biết bạn đang sử dụng công nghệ nào và có thể chúng tôi có thể bắt đầu từ đó. Chúng tôi đã triển khai yêu cầu bạn đang có ngay bây giờ.

Cảm ơn bạn.

+0

Tôi đã bỏ phiếu xuống vì câu trả lời này quá mơ hồ – gordon613

+0

Bạn xử lý theo dõi phiên đăng nhập/phiên làm việc của mình như thế nào? Một lần nữa, khái niệm, vì nó là một khái niệm, là mơ hồ. Và bạn đang yêu cầu một cách tiếp cận cho vấn đề đó là những gì tôi đang cố gắng tìm ra nếu nó hoạt động cho bạn. Nếu tôi thực hiện điều này, hãy sử dụng Spring. Tôi có một Trình chặn đánh dấu để kiểm tra các yêu cầu URL đến trong ứng dụng của tôi. Nếu tôi nhấn một URL cụ thể, giả sử 'myApp/getCalculations', tôi sẽ bỏ qua chức năng kiểm tra đăng nhập/phiên và cung cấp cho người yêu cầu tất cả thông tin cần thiết, có thể thông qua đối tượng được tuần tự hóa, chuỗi, json, v.v.). Chúc mừng! – Miki

+0

Cảm ơn bạn đã trả lời. Hãy để chúng tôi nói rằng tôi tạo một URL thực hiện các phép tính (và bỏ qua thông tin đăng nhập như bạn đề xuất), bạn sẽ đề nghị jasper giao tiếp với URL này như thế nào. Cụ thể như thế nào nó sẽ gọi nó, và làm thế nào nó sẽ nhận được dữ liệu XML mà URL này sẽ sản xuất? – gordon613

Các vấn đề liên quan