¿Cómo funciona el objeto de licencia de aspose? ¿Dura para siempre?

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Estoy usando Aspose para manejar PDF y documentos de Word. Cada vez que estoy a punto de hacer algo con un documento, me aseguro de llamar a esto:

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

los pdfLicense y wordLicense Las variables nunca se usan en ningún lado, pero Aspeo reconoce correctamente que tengo una licencia válida. ¿Como sucedió esto? ¿Las licencias se llevan a cabo en un singleton secreto en alguna parte? Si es así, ¿esto significa que duran la vida del hilo?

Como esto se está utilizando en una aplicación web, si ejecuto el código anterior cuando se inicia la aplicación, ¿puedo usar de forma segura Asponse a lo largo de mi aplicación sin preocuparme por la licencia?

Por el momento, estaría más paranoico y ejecutaba ese código al comienzo de cada método que usa aspose. Esto funciona bien, mi licencia se reconoce correctamente, pero también es un poco "programación por coincidencia" para que me siento cómodo al respecto.

(Estoy usando C# con ASP.NET 3.5, si eso hace alguna diferencia).

¿Fue útil?

Solución

Si lees el documentación del producto, verás esta línea:

Debe establecer una licencia antes de realizar cualquier operación con documentos. Solo se requiere establecer una licencia Una vez por aplicación (o proceso).

Por lo tanto, está centrado en el proceso.

Otros consejos

En la versión Java de Aspose, puede verificar si la licencia se estableció llamando

License.isLicenseSet();

que devuelve un booleano. Observe que este es un método estático.

Intenté crear un frijol de primavera que haría esto (como se muestra a continuación), pero no funcionó. Spring parecía querer llamar a License.SetLicense (Reader) en lugar de License.SetLicense (cadena). El error que recibo es No se pudo convertir el valor de la propiedad del tipo 'java.lang.string' al tipo requerido 'java.io.reader' para la propiedad 'licencia'.

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

Sin embargo, obtuve esta solución más genérica (Java) para que funcione:

web.xml:

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

ApplicationStartUplistener.java (nueva clase):

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

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top