Asposeライセンスオブジェクトはどのように機能しますか?それは永遠に続きますか?
-
19-09-2019 - |
質問
Asopseを使用して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は私が有効なライセンスを持っていることを正しく認識しています。これはどのように起こりますか?ライセンスはどこかに秘密のシングルトンで開催されていますか?もしそうなら、これは彼らがスレッドの生涯にわたって持続することを意味しますか?
これはWebアプリケーションで使用されているため、アプリケーションが起動したときに上記のコードを実行した場合、ライセンスを心配することなくアプリケーション全体でAsposeを安全に使用できますか?
現時点では、私はより妄想的であり、Asposeを使用するすべての方法の開始時にそのコードを実行しています。これは正常に機能します - 私のライセンスは正しく認識されています - しかし、私がそれについて快適に感じるには、それは少し「偶然のプログラミングによる」あまりにもすぎます。
(ASP.NET 3.5でC#を使用しています。
解決
あなたが読んだら 製品ドキュメント, 、この行が表示されます:
ドキュメントを使用して操作を実行する前に、ライセンスを設定する必要があります。ライセンスを設定するだけで必要です アプリケーションごとに1回(またはプロセス).
したがって、それはプロセス中心です。
他のヒント
JavaバージョンのAsposeでは、呼び出してライセンスが設定されているかどうかを確認できます
License.isLicenseSet();
ブールを返します。これは静的な方法であることに注意してください。
(以下に示すように)これを行うスプリングビーンを作成しようとしましたが、機能しませんでした。 Springは、ライセンスの代わりにライセンス.setlicense(Reader)を呼び出したいと思っていたようでした。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) {
}
}