2010-03-10 20 views
7

Tôi đang sử dụng Aspose để xử lý các tệp PDF và tài liệu Word. Mỗi lần tôi sắp làm điều gì đó với một tài liệu, tôi chắc chắn rằng để gọi đây là:Đối tượng Giấy phép Aspose hoạt động như thế nào? Nó có tồn tại mãi mãi không?

Aspose.Pdf.License pdfLicense = new Aspose.Pdf.License(); 
pdfLicense.SetLicense("Aspose.Total.lic"); 

Aspose.Words.License wordLicense = new Aspose.Words.License(); 
wordLicense.SetLicense("Aspose.Total.lic"); 

Các pdfLicensewordLicense biến không bao giờ sử dụng bất cứ nơi nào, nhưng Aspose công nhận một cách chính xác rằng tôi có một giấy phép hợp lệ. Điều này xảy ra như thế nào? Các giấy phép có được giữ trong một singleton bí mật ở đâu đó không? Nếu vậy, điều này có nghĩa là chúng tồn tại suốt đời của sợi không?

Vì điều này đang được sử dụng trong một ứng dụng web, nếu tôi chạy mã trên khi ứng dụng khởi động, tôi có thể sử dụng Aspose một cách an toàn trong suốt ứng dụng mà không phải lo lắng về việc cấp phép không?

Hiện tại tôi sẽ hoang tưởng hơn và chạy mã đó ở đầu mỗi phương thức sử dụng Aspose. Điều này làm việc tốt - giấy phép của tôi được công nhận một cách chính xác - nhưng nó hơi quá "lập trình-by-trùng hợp ngẫu nhiên" cho tôi cảm thấy thoải mái về nó.

(. Tôi đang sử dụng C# với ASP.NET 3.5, nếu mà làm cho bất kỳ sự khác biệt)

Trả lời

7

Nếu bạn đọc product documentation, bạn sẽ thấy dòng này:

Bạn cần phải thiết lập một cấp phép trước khi thực hiện bất kỳ thao tác nào với tài liệu. Chỉ cần thiết lập giấy phép một lần cho mỗi đơn đăng ký (hoặc quy trình).

Do đó nó là quá trình tập trung.

1

Trong phiên bản Java của Aspose bạn có thể kiểm tra xem giấy phép đã được thiết lập bằng cách gọi

License.isLicenseSet(); 

mà trả về một boolean. Lưu ý rằng đây là một phương thức tĩnh.

1

Tôi đã thử tạo một bean Spring sẽ thực hiện việc này (như được hiển thị bên dưới), nhưng nó không hoạt động. Mùa xuân dường như muốn gọi License.setLicense (Reader) thay vì License.setLicense (String). Lỗi tôi nhận được là Không thể chuyển đổi giá trị thuộc tính của loại 'java.lang.String' thành loại bắt buộc 'java.io.Reader' cho thuộc tính 'giấy phép'.

<bean id="asposeLicense" class="com.aspose.cells.License"> 
    <property name="license" value="Aspose.Cells.lic" /> 
</bean> 

tuy nhiên tôi đã nhận được chung chung hơn (Java) giải pháp này để làm việc:

web.xml:

<!-- does things needing doing when application starts or stops --> 
<listener> 
    <listener-class> 
     com.xyz.listener.ApplicationStartupListener 
    </listener-class> 
</listener> 

ApplicationStartupListener.java (lớp mới):

package com.xyz.listener; 

import java.io.InputStream; 

import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

import com.aspose.cells.License; 

public class ApplicationStartupListener implements ServletContextListener { 
    protected final Log logger = LogFactory.getLog(getClass()); 

    @Override 
    public void contextInitialized(ServletContextEvent event) { 
    logger.info("Initializing application context..."); 

    try { 
     // set license for Aspose.Cells (the Excel API) 
     InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("excel/Aspose.Cells.lic"); 
     License license = new License(); 
     license.setLicense(inputStream); 
     logger.info("Aspose.Cells license set? " + License.isLicenseSet()); 
    } catch (Exception e) { 
     logger.error("Error encountered trying to set Aspose.Cells license!", e); 
    } 

    logger.info("Application context initialized"); 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent event) { 
    } 

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