Zdravím,
pro plugin nové generace by měl být i applet definován JNLP souborem. Aby
byla aplikace považována za důvěryhodnou, musí pak být JNLP soubor v
nezměněné podobě součástí hlavního podepsaného JARu v souboru
JNLP-INF/APPLICATION.JNLP Ten JNLP soubor může vypadat např. takhle:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="applet-ef-505.jnlp" codebase="https://…";>
  <information>
    <title>…</title>
    <vendor>…</vendor>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
    <j2se href="http://java.sun.com/products/autodl/j2se"; version="1.6+"/>
    <jar href="epd_applet_boot-505.jar" main="true"/>
    <jar href="epd_applet-505.jar"/>
    <jar href="epd_applet_ef-505.jar"/>
    <jar href="commons-httpclient-3.0.1.jar"/>
    <jar href="commons-codec-1.6.jar"/>
    <jar href="slf4j-api-1.7.5.jar"/>
    <jar href="epd_applet_boot-505.jar"/>
  </resources>
  <applet-desc height="500" name="…" width="500"
main-class="cz.….applet.boot.Applet"/>
</jnlp>

V HTML kódu je pak applet vložen takto:
<embed serverHost='https://…' java_version='1.6+' pluginspage='
http://java.com/en/download/index.jsp' jnlp_href='applet-ef-505.jnlp'
java_codebase='/context/applet'
type='application/x-java-applet;version=1.6'></embed>

Filip Jirsák


2014-05-19 10:09 GMT+02:00 Lucie Rút Bittnerová <lu...@mathan.cz>:

> Ahoj,
>
> nemate nejaky postup, jake atributy dat do manifestu a co kde nastavit,
> aby fungoval aplet, ktery potrebuje i pro jary knihoven all-permissions, i
> na Jave 1.7u51 a vyssi? Zatim mi aplet funguje pouze v IE, kdyz v Java
> Control Panelu nemam zaskrtnuto "Enable the next-generation Java Plug-in".
> Jak jsem pochopila, toto nastaveni pro Chrome a Firefox nema zadny efekt,
> takze bych potrebovala zaridit, aby aplet prosel i se zaskrtnutym "Enable
> the next-generation Java Plug-in". Aplikace se sklada z hlavniho jaru a
> nekolika knihoven. Hlavni jar se nacte, ale pri pokusu o nacteni tridy z
> jaru knihovny se vyhodi NoClassDefFaund exception, a to i kdyz jar knihovny
> podepisu s pouzitim stejneho certifikatu, jako pouzivam k podpisu hlavniho
> jaru (certifikat zalozeny na vlastni CA, jejiz korenovy certifikat jsem
> pridala pres Java Control Panel k duveryhodnym certifikatum). V manifestu
> hlavniho jaru mam Permissions: all-permissions, Trusted-Library: true,
> Codebase: *, Application-Library-Allowable-Codebase: *,
> Caller-Allowable-Codebase: *.  Do jaru knihovny jsem zkousela pridat ruzne
> kombinace Permissions a Trusted-Library.
>
> Jedine reseni, co me napada, ze by mohlo fungovat, je prebalit vsechny
> jary do jednoho, ale do toho se mi nechce, musi to prece jit i jinak.
>
> Lucie
>
>  Vypis z Java Console:
>
> Java Plug-in 10.55.2.13
> Using JRE version 1.7.0_55-b13 Java HotSpot(TM) Client VM
> User home directory = C:\Users\hobit
> ----------------------------------------------------
> c:   clear console window
> f:   finalize objects on finalization queue
> g:   garbage collect
> h:   display this help message
> l:   dump classloader list
> m:   print memory usage
> o:   trigger logging
> q:   hide console
> r:   reload policy configuration
> s:   dump system and deployment properties
> t:   dump thread list
> v:   dump thread stack
> x:   clear classloader cache
> 0-5: set trace level to <n>
> ----------------------------------------------------
> Trace level set to 5: all ... completed.security: User has granted the
> privileges to the code for this session only
> security: Saving certificates in Deployment session certificate store
> security: Saved certificates in Deployment session certificate store
> security: SHA-256Certificate finger print: 36F270CCE07A4ED7BD7B079E76E878
> 116569D9E35E246195CA999631B17D5886
> security: Decision time stored for ai: Appinfo:
> type = 2
> title = PdfSigner
> vendor = null
> from = http://localhost:8080/pdfsigner/lib/ami-crypto-1.0.jar
> security = 0
> lapURL = http://localhost:8080/pdfsigner/lib//testapplet-object
> appArgs = ##docbase:http://localhost:8080/pdfsigner/##Parameters:{
> pluginspage=http://java.com/download/, java_arguments=, width=200,
> launchjnlp=, code=cz.ami.crypto.applet.PdfSignApplet,
> java_version=1.7.0_55, embedded=, __applet_ssv_version=1.7.0.55,
> id=testapplet-object, input=http://localhost:8080/pdfsigner/potvrzeni.pdf,
> height=50, __applet_relaunched=false, name=testapplet-object,
> archive=ami-crypto-1.0.jar, pdfbox-1.8.4.jar, commons-logging-1.0.4.jar,
> commons-collections-3.2.1.jar, bcprov-jdk15on-150.jar,
> bcpkix-jdk15on-150.jar, bcmail-jdk15on-150.jar, TableLayout.jar, output=
> http://adresa uploadu, codebase=/pdfsigner/lib}
> security: Grant socket perm for http://localhost:8080/
> pdfsigner/lib/ami-crypto-1.0.jar : java.security.Permissions@a7624e (
>  ("java.net.SocketPermission" "localhost" "connect,accept,resolve")
> )
>
> security: Validate the certificate chain using CertPath API
> basic: Plugin2ClassLoader.getPermissions CeilingPolicy allPerms
> security: Validate the certificate chain using CertPath API
> ruleset: Non-jnlp rule id:
>         title: testapplet-object
>         location: http://localhost:8080/pdfsigner/
>         jar location: http://localhost:8080/pdfsigner/lib/
>         jar version: null
>         isArtifact: true
> ruleset: finding Deployment Rule Set for
>         title: testapplet-object
>         location: http://localhost:8080/pdfsigner/
>         jar location: http://localhost:8080/pdfsigner/lib/
>         jar version: null
>         isArtifact: true
> ruleset: no rule applies, returning Default Rule
> security: SSV validation:
>     running: 1.7.0_55
>     requested: 1.7.0.55
>     range: null
>     javaVersionParam: 1.7.0_55
>     Rule Set version: null
> network: Created version ID: 1.7.0.55
> network: Created version ID: 1.7.0.55
> security: continue with running version
> network: Created version ID: 1.7.0.55
> network: Created version ID: 1.7
> network: Created version ID: 2.2.55
> preloader: Delivering: AppletInitEvent[type=CallConstructor]
> preloader: Start progressCheck thread
> security: blacklist: hasBeenModifiedSince 1400077393487 (we have
> 1399994886099)
> network: Cache entry found [url: http://localhost:8080/
> pdfsigner/lib/pdfbox-1.8.4.jar, version: null] prevalidated=false/0
> cache: Adding MemoryCache entry: http://localhost:8080/
> pdfsigner/lib/pdfbox-1.8.4.jar
> cache: Resource http://localhost:8080/pdfsigner/lib/pdfbox-1.8.4.jar has
> expired.
> network: Connecting http://localhost:8080/pdfsigner/lib/pdfbox-1.8.4.jarwith 
> proxy=DIRECT
> network: Connecting http://localhost:8080/ with proxy=DIRECT
> network: ResponseCode for http://localhost:8080/
> pdfsigner/lib/pdfbox-1.8.4.jar : 304
> network: Encoding for http://localhost:8080/pdfsigner/lib/pdfbox-1.8.4.jar: 
> null
> network: Disconnect connection to http://localhost:8080/
> pdfsigner/lib/pdfbox-1.8.4.jar
> cache:  Read manifest for http://localhost:8080/
> pdfsigner/lib/pdfbox-1.8.4.jar: read=2794 full=43320
> cache: Loading full manifest for http://localhost:8080/
> pdfsigner/lib/pdfbox-1.8.4.jarcache: Reading Signers from 4526
> http://localhost:8080/pdfsigner/lib/pdfbox-1.8.4.jar |
> C:\Users\hobit\AppData\LocalLow\Sun\Java\Deployment\
> cache\6.0\1\bfe4fc1-3fc24490.idx
> cache: Done readSigners(http://localhost:8080/pdfsigner/lib/pdfbox-1.8.
> 4.jar)
> security: Trust for: http://localhost:8080/pdfsigner/lib/pdfbox-1.8.4.jarhas 
> ended: Thu Jan 01 01:00:00 CET 1970
> ruleset: Non-jnlp rule id:
>         title: testapplet-object
>         location: http://localhost:8080/pdfsigner/
>         jar location: http://localhost:8080/pdfsigner/lib/pdfbox-1.8.4.jar
>         jar version: null
>         isArtifact: true
> ruleset: finding Deployment Rule Set for
>         title: testapplet-object
>         location: http://localhost:8080/pdfsigner/
>         jar location: http://localhost:8080/pdfsigner/lib/pdfbox-1.8.4.jar
>         jar version: null
>         isArtifact: true
> ruleset: no rule applies, returning Default Rule
> security: Validate the certificate chain using CertPath API
> basic: exception: java.lang.NoClassDefFoundError:
> org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureInterface.
> java.lang.RuntimeException: java.lang.NoClassDefFoundError:
> org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureInterface
>     at 
> com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.instantiateApplet(Unknown
> Source)
>     at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
>     at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown
> Source)
>     at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.NoClassDefFoundError: org/apache/pdfbox/pdmodel/
> interactive/digitalsignature/SignatureInterface
>     at java.lang.ClassLoader.defineClass1(Native Method)
>     at java.lang.ClassLoader.defineClass(Unknown Source)
>     at java.security.SecureClassLoader.defineClass(Unknown Source)
>     at java.net.URLClassLoader.defineClass(Unknown Source)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>     at java.lang.reflect.Method.invoke(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown
> Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown
> Source)
>     at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
>     at java.lang.ClassLoader.loadClass(Unknown Source)
>     at java.lang.Class.getDeclaredMethods0(Native Method)
>     at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
>     at java.lang.Class.getDeclaredMethod(Unknown Source)
>     at java.awt.Component.isCoalesceEventsOverriden(Unknown Source)
>     at java.awt.Component.access$500(Unknown Source)
>     at java.awt.Component$3.run(Unknown Source)
>     at java.awt.Component$3.run(Unknown Source)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.awt.Component.checkCoalescing(Unknown Source)
>     at java.awt.Component.<init>(Unknown Source)
>     at java.awt.Container.<init>(Unknown Source)
>     at java.awt.Panel.<init>(Unknown Source)
>     at java.awt.Panel.<init>(Unknown Source)
>     at java.applet.Applet.<init>(Unknown Source)
>     at javax.swing.JApplet.<init>(Unknown Source)
>     at cz.ami.crypto.applet.PdfSignApplet.<init>(PdfSignApplet.java:24)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
> Source)
>     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
> Source)
>     at java.lang.reflect.Constructor.newInstance(Unknown Source)
>     at java.lang.Class.newInstance(Unknown Source)
>     at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter$1.run(Unknown
> Source)
>     at java.awt.event.InvocationEvent.dispatch(Unknown Source)
>     at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
>     at java.awt.EventQueue.access$200(Unknown Source)
>     at java.awt.EventQueue$3.run(Unknown Source)
>     at java.awt.EventQueue$3.run(Unknown Source)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown
> Source)
>     at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown
> Source)
>     at java.awt.EventQueue$4.run(Unknown Source)
>     at java.awt.EventQueue$4.run(Unknown Source)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown
> Source)
>     at java.awt.EventQueue.dispatchEvent(Unknown Source)
>     at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
>     at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
>     at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
>     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>     at java.awt.EventDispatchThread.run(Unknown Source)
> Caused by: java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.
> interactive.digitalsignature.SignatureInterface
>     at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
>     at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
>     at java.lang.ClassLoader.loadClass(Unknown Source)
>     ... 59 more
> Ignored exception: java.lang.RuntimeException: java.lang.NoClassDefFoundError:
> org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureInterface
> ui: missing resource: java.util.MissingResourceException: Can't find
> resource for bundle com.sun.deploy.resources.Deployment, key OK
> ui: missing resource: java.util.MissingResourceException: Can't find
> resource for bundle com.sun.deploy.resources.Deployment, key OK
> ui: missing resource: java.util.MissingResourceException: Can't find
> resource for bundle com.sun.deploy.resources.Deployment, key More
> Information...
> basic: Dialog type is not candidate for embedding
> ui: Pushing modality for applet ID 1 with dialog
> javax.swing.JDialog[dialog0,382,248,516x228,layout=java.
> awt.BorderLayout,TOOLKIT_MODAL,title=ApplicationError,
> defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.
> JRootPane[,3,23,510x202,layout=javax.swing.JRootPane$
> RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=
> 16777673,maximumSize=,minimumSize=,preferredSize=],
> rootPaneCheckingEnabled=true]
> preloader: Stop progressCheck thread
>

Odpovedet emailem