2010-03-10 17 views
7

Estoy usando Aspose para manejar archivos PDF y Word. Cada vez que estoy a punto de hacer algo con un documento, asegúrese de llamar a esto:¿Cómo funciona el objeto Aspose License? ¿Dura para siempre?

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

Las variables pdfLicense y wordLicense nunca se usan en cualquier lugar, sin embargo Aspose 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í, ¿significa que duran la vida útil del hilo?

Como esto se utiliza en una aplicación web, si ejecuto el código anterior cuando la aplicación se inicia, ¿puedo usar Aspose de forma segura en toda mi aplicación sin preocuparme por la licencia?

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

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

Respuesta

7

Si usted lee la product documentation, verá esta línea:

Es necesario 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, es centrado en el proceso.

1

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

License.isLicenseSet(); 

que devuelve un valor lógico. Tenga en cuenta que este es un método estático.

1

Intenté crear un Spring Bean que hiciera esto (como se muestra a continuación), pero no funcionó. Spring parecía querer llamar a License.setLicense (Reader) en lugar de License.setLicense (String). El error que recibo es Error al convertir el valor de propiedad de tipo 'java.lang.String' al tipo requerido 'java.io.Reader' para la 'licencia' de la propiedad.

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

sin embargo me hizo llegar esta solución más genérica (Java) para trabajar:

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

} 
Cuestiones relacionadas