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
<mailto: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:
36F270CCE07A4ED7BD7B079E76E878116569D9E35E246195CA999631B17D5886
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/
<http://localhost:8080/pdfsigner/#%23Parameters:%7Bpluginspage=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.jar with 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.jar has 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