2012-01-24 14 views
6

मैं बीआईआरटी रिपोर्टिंग इंजन को टॉमकैट में मौजूदा वेबपैप में जोड़ना चाहता हूं। मुझे बीआईआरटी दर्शक की आवश्यकता नहीं है, मैं वास्तव में केवल http://localhost:8080/birt/output?__report=test.rptdesign&sample=my+parameter जैसे यूआरएल से रिपोर्ट चलाने में सक्षम होना चाहता हूं और विभिन्न निर्यात विकल्पों पीडीएफ, एक्सएलएस, डॉक्टर, एचटीएमएल का उपयोग करना चाहता हूं।मौजूदा वेबैप में बीआईआरटी को एकीकृत करें

एकीकरण गाइड जो मैंने पाया है अब तक सभी दर्शक को शामिल करते हैं और विभिन्न प्रारूपों को संभालने के लिए अपने स्वयं के सर्वलेट लिखते हैं।

मुझे उम्मीद थी कि किसी को पता था कि रिपोर्ट-इंजन वेब.एक्सएमएल फ़ाइल से मुझे कौन सा सर्वलेट मैपिंग चाहिए, और मुझे आवश्यक वेबपैड में इस बेयरबोन बीआईआरटी कार्यान्वयन के लिए मुझे कौन सी जारों को lib निर्देशिका से शामिल करने की आवश्यकता होगी।

उत्तर

17

मुझे उम्मीद थी कोई बस जो रिपोर्ट इंजन web.xml फ़ाइल मैं की जरूरत है और जो जार से सर्वलेट मैपिंग मैं करने की आवश्यकता होगी पता था कि मौजूदा webapp में इस barebones BIRT कार्यान्वयन के लिए lib निर्देशिका से शामिल हैं।

मैं जरूरी मेरे अपने सर्वलेट लिखने के लिए नहीं करना चाहता था मैं बस अपना मौजूदा webapp में ("क्रम" बटन के तहत here) अपने स्वयं के स्टैंडअलोन webapp से मौजूदा रिपोर्टिंग क्रम एकीकृत करने के लिए, ताकि मैं डॉन चाहता था ' बीआईआरटी रिपोर्ट चलाने में सहायता के लिए 2 वेबपैप्स वितरित करना होगा। क्षमा करें अगर वह स्पष्ट नहीं था।

मैं इस बाहर हालांकि सरल संभव फैशन में काम किया था, इस मामले में किसी को भी एक ऐसी ही सवाल (BIRT क्रम 3.7.1 का प्रयोग करके) है:

  1. आपको बस निम्नलिखित सर्वलेट मानचित्रण करने के लिए जोड़ा है अपनी खुद की webapp\web-inf\web.xml फ़ाइल:

    <!-- Engine Servlet --> 
    <servlet> 
        <servlet-name>EngineServlet</servlet-name> 
        <servlet-class>org.eclipse.birt.report.servlet.BirtEngineServlet</servlet-class> 
    </servlet> 
    
    <servlet-mapping> 
        <servlet-name>EngineServlet</servlet-name> 
        <url-pattern>/output</url-pattern> 
    </servlet-mapping> 
    
  2. अपनी खुद की webapp\web-inf\lib dir में runtime की web-inf\lib निर्देशिका से सभी जार शामिल करें ectory।

बाद ही आप अपना webapp से output BIRT रिपोर्ट यूआरएल का उपयोग कर, और निर्दिष्ट करने फ़ाइलों .rptdesign चला सकते हैं आप चाहते हैं जो कुछ भी प्रारूप, जैसे:

http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=pdf 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=html 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=xls 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=doc 
http://localhost:8080/myOwnWebapp/output?__report=test.rptdesign&__format=ppt 
+3

के पीछे चीजें काम करती हैं शानदार जवाब, स्टैक ओवरफ़्लो का श्रेय। पूरा और बिल्कुल क्या पूछा गया था। बहुत बढ़िया। – MystikSpiral

+0

पुनरीक्षित - 4.2.2 के लिए भी काम करता है – Geronimo

+0

यह टॉमकैट 7 में बीआईआरटी 4.3.2 के लिए काम करता है। यह जेटी में 3.7.1 या 4.3.2 के लिए काम नहीं करता था। – Ryan

1

जैसा कि मैं आपको समझता हूं, आप एक बर्ट रिपोर्ट बनाने के लिए एक सर्वलेट बनाने की कोशिश कर रहे हैं जहां आपके पास कहीं भी * .ptptesignign है।

अच्छा है, तो निम्न कोड

this.bundle = ResourceBundle.getBundle("com.tts.mersal.resources.MersalResources"); 
this.config = new EngineConfig(); 
this.config.setEngineHome(bundle.getString("BIRT_ENGINE_HOME")); 
this.config.setLogConfig(bundle.getString("BIRT_LOGGING_FOLDER_PATH"), Level.ALL); 
Platform.startup(config); 
this.factory = (IReportEngineFactory)Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
this.engine = factory.createReportEngine(config); 
this.engine.changeLogLevel(Level.ALL); 
ContentReader contentReader = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getFileFolderService().getReader(MersalOutboundReportDialogBean.this.dialogReportNode.getNodeRef()); 
IReportRunnable report = MersalOutboundReportDialogBean.this.getEngine().openReportDesign(contentReader.getContentInputStream()); 
ReportDesignHandle designHandle = (ReportDesignHandle)report.getDesignHandle(); 
OdaDataSource source = (OdaDataSource)designHandle.getModule().findDataSource(DATA_SOURCE_NAME); 
source.setProperty(source.getPropertyDefn("FILELIST"), buildUrl((String)source.getProperty(designHandle.getModule(), "FILELIST"))); 
IRunAndRenderTask runAndRenderTask = MersalOutboundReportDialogBean.this.getEngine().createRunAndRenderTask(report); 
HTMLRenderOption render = new HTMLRenderOption(); 
render.setOutputFileName("G:/Render.html"); 
render.setOutputFormat("html"); 
runAndRenderTask.setRenderOption(render); 
runAndRenderTask.run(); 
runAndRenderTask.close(); 

को देखो आप पहली बात birt इंजन तैयार करना होगा और उसके बाद प्रकार IReportRunnable से रिपोर्ट का एक उदाहरण मिलता देख सकते हैं, तो आप के बाद उस स्थान निर्धारित कर सकते हैं आउटपुट का उपयोग करके विकल्प का उपयोग करके आपके अनुरोध के आधार पर बदला जाएगा।

आपके पास एकाधिक chocies, HTMLRenderOption, PDFRenderOption और अन्य हैं।

मुझे उम्मीद है कि आपकी सेवा करेगा।

धन्यवाद।

+0

इस के लिए धन्यवाद, मैं मुख्य रूप से एकीकृत करने के लिए कोशिश कर रहा था मेरे अपने वेबपैड में मौजूदा रनटाइम। क्षमा करें अगर यह स्पष्ट नहीं था।मैंने यह नीचे काम किया है। – Geronimo

+0

+1 यह दिखाने के लिए कि कैसे BirtEngineServlet – dragon66

संबंधित मुद्दे