FOP / AEM: десериализация не разрешена для класса org.apache.fop.fonts.FontCache - PullRequest
0 голосов
/ 16 ноября 2018

Невозможно получить внешний шрифт в fop, получая сообщение:

java.lang.UnsupportedOperationException: десериализация не разрешена для класса org.apache.fop.fonts.FontCache (в четверг 15 ноября 11:07:35 PST 2018) в org.kantega.notsoserial.DefaultNotSoSerial.preventDeserialization (DefaultNotSoSerial.java:256) в org.kantega.notsoserial.DefaultNotSoSerial.onBeforeResolveClass (DefaultNotSoSerial.java:248) в org.kantega.notsoserial.ObjectInputStreamClassVisitor.onBeforeResolveClass (ObjectInputStreamClassVisitor.java:48) в java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1868) в java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1751) в java.io.ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:2042) в java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1573) в java.io.ObjectInputStream.readObject (ObjectInputStream.java:431) в org.apache.fop.fonts.FontCache.loadFrom (FontCache.java:151) в org.apache.fop.fonts.FontCache.load (FontCache.java:132) в org.apache.fop.fonts.FontManager.setUseCache (FontManager.java:121) в org.apache.fop.fonts.FontManager. (FontManager.java:63) в org.apache.fop.apps.FopFactory $ 1. (FopFactory.java:159) a.lang.UnsupportedOperationException: десериализация не разрешена для класса org.apache.fop.fonts.FontCachet org.apache.fop.apps.FopFactory. (FopFactory.java:156) в org.apache.fop.apps.FopFactory.newInstance (FopFactory.java:177) в com.intelsecurity.aem.services.impl.util.PDFFOPServiceImpl.createPDF (PDFFOPServiceImpl.java:74) в com.intelsecurity.aem.services.impl.checkout.CreatePurchaseReceiptDataServiceImpl.createPurchaseReceiptData (CreatePurchaseReceiptDataServiceImpl.java:172) в com.intelsecurity.aem.servlets.checkout.PurchaseOrderServlet.operationGetOrderSummary (PurchaseOrderServlet.java:342) at com.intelsecurity.aem.servlets.checkout.PurchaseOrderServlet.doPost (PurchaseOrderServlet.java:178) в org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService (SlingAllMethodsServlet.java:146) в org.apache.sling.api.servlets.SlingSafeMethodsServlet.service (SlingSafeMethodsServlet.java:342) в org.apache.sling.api.servlets.SlingSafeMethodsServlet.service (SlingSafeMethodsServlet.java:374) на

Ниже приводится файл fopconfig:

<?xml version="1.0"?>
<fop version="1.0">
  <base>.</base>
  <source-resolution>72</source-resolution>
  <target-resolution>72</target-resolution>
  <default-page-settings height="11.00in" width="8.50in"/>
  <renderers>
    <renderer mime="application/pdf">
      <filterList>
        <value>flate</value>
      </filterList>
      <fonts>
         <font embed-url=".">
          <font-triplet name="TrueType" style="normal" weight="normal"/>
        </font>
      </fonts>
    </renderer>
  </renderers>
</fop>

и мой шрифт хранится в тех же папках, что и fop-config

Чтобы устранить вышеуказанную проблему, я попытался выполнить следующий шаг:

final FopFactory fopFactory = FopFactory.newInstance();
            fopFactory.getFontManager().getFontCache().clear();

однако мой пакет osgi, похоже, все еще находится в установленном состоянии.

Что я делаю не так?

1 Ответ

0 голосов
/ 16 ноября 2018

AEM использует брандмауэр десериализации, и только явным образом занесенные в белый список классы могут быть десериализованы.вам нужно занести в белый список ваш класс в конфигурации osgi для - com.adobe.cq.deserfw.impl.DeserializationFirewallImpl

serialization firewall config

...