Как работает объект лицензии Aspose?Будет ли это длиться вечно?

StackOverflow https://stackoverflow.com/questions/2416216

  •  19-09-2019
  •  | 
  •  

Вопрос

Я использую 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, если это имеет какое-то значение.)

Это было полезно?

Решение

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

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

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

Другие советы

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

License.isLicenseSet();

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

Я попытался создать пружинный фасоль, который сделал бы это (как показано ниже), но это не сработало. Весна, казалось, хотела позвонить в лицензию. Setlicense (читатель) вместо лицензии. Setlicense (String). Ошибка, которую я получаю Не удалось преобразовать значение свойства типа «java.lang.string» в требуемый тип 'java.io.reader' для собственности 'лицензия'.

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

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top