Как работает объект Aspose License? Это длится вечно? - PullRequest
7 голосов
/ 10 марта 2010

Я использую Aspose для обработки документов PDF и Word. Каждый раз, когда я собираюсь что-то сделать с документом, я обязательно вызываю это:

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");

Переменные pdfLicense и wordLicense никогда нигде не используются, но Aspose правильно распознает, что у меня есть действующая лицензия. Как это произошло? Лицензии хранятся где-то в секретном синглтоне? Если это так, значит ли это, что они сохраняются в течение всей жизни потока?

Поскольку это используется в веб-приложении, если я запускаю приведенный выше код при запуске приложения, могу ли я безопасно использовать Aspose во всем приложении, не беспокоясь о лицензировании?

В настоящий момент я был более параноиком и выполнял этот код в начале каждого метода, использующего Aspose. Это прекрасно работает - моя лицензия распознается правильно - но это слишком «случайное программирование», чтобы я чувствовал себя комфортно.

(я использую C # с ASP.NET 3.5, если это что-то меняет.)

Ответы [ 3 ]

7 голосов
/ 10 марта 2010

Если вы прочитаете документацию по продукту , вы увидите следующую строку:

Вам необходимо установить лицензию перед выполнением любых операций с документами. Требуется установить лицензию только один раз для приложения (или процесса) .

Следовательно, он ориентирован на процесс.

1 голос
/ 17 июня 2014

Я попытался создать bean-компонент Spring, который бы делал это (как показано ниже), но он не работал. Spring, похоже, хотел вызвать License.setLicense (Reader) вместо License.setLicense (String). Я получаю ошибку Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'java.io.Reader' для свойства 'license' .

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

Однако я получил более общее (Java) решение для работы:

web.xml:

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

ApplicationStartupListener.java (новый класс):

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) {
    }

}
1 голос
/ 04 декабря 2012

В Java-версии Aspose вы можете проверить, была ли установлена ​​лицензия, набрав

License.isLicenseSet();

, который возвращает логическое значение. Обратите внимание, что это статический метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...