Javadoc 4 JSSE

I'm working with NetBeans 1.4. Just re-downloaded because I couldn't find the JSSE javadocs in my current set-up. Still don't see the correct Javadocs for 1.5. All I have is the Enterprise Javadocs for 1.4 in the latest NetBeans bundled download.
Where can I get a download of the entire JSSE javadoc so I can add it to my Library?

You should have javax.net.ssl.* already there.

Similar Messages

  • Error during generation of the WSDL:  BUILD FAILED java.lang.NoClassDefFoundError: com/sun/javadoc/Type

    When I create an EJB Transport Business Service, after selecting the jar that has the EJB 2.1 artefacts (Remote, Home, etc) the oepe plugin fails and can't continue.
    As I understand it seems that there is a problem with the classpath of ant build.xml  that oepe creates inside folder /tmp/alsbejbtransport/ to compile the bs and generate the wsdl. I checked if tools.jar is in the classpath (in eclipse) and is included, so I can't figure out wich is the problem.
    I found this in Oracle, but not helps solve the problem:
    BEA-398120
    Error: The WSDL for the typed transport endpoint could not be accessed.
    Description
    There was a problem retrieving the WSDL from the typed transport service endpoint at the time of service registration
    Action
    Contact technical support
    This is the the full stacktrace that shows eclipse.
    Generate : Error during generation of the WSDL:
    BUILD FAILED
    java.lang.NoClassDefFoundError: com/sun/javadoc/Type
            at com.bea.util.jam.provider.JamServiceFactoryImpl.createSourceBuilder(JamServiceFactoryImpl.java:205)
            at com.bea.util.jam.provider.JamServiceFactoryImpl.createBuilder(JamServiceFactoryImpl.java:158)
            at com.bea.util.jam.provider.JamServiceFactoryImpl.createClassLoader(JamServiceFactoryImpl.java:137)
            at com.bea.util.jam.provider.JamServiceFactoryImpl.createService(JamServiceFactoryImpl.java:78)
            at weblogic.wsee.util.JamUtil.parseSource(JamUtil.java:152)
            at weblogic.wsee.tools.anttasks.JwsLoader.loadJClasses(JwsLoader.java:186)
            at weblogic.wsee.tools.anttasks.JwsLoader.load(JwsLoader.java:75)
            at weblogic.wsee.tools.anttasks.JwsModule.loadWebServices(JwsModule.java:569)
            at weblogic.wsee.tools.anttasks.JwsModule.generate(JwsModule.java:369)
            at weblogic.wsee.tools.anttasks.JwsModule.build(JwsModule.java:256)
            at weblogic.wsee.tools.anttasks.JwscTask.execute(JwscTask.java:184)
            at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
            at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
            at org.apache.tools.ant.Task.perform(Task.java:348)
            at org.apache.tools.ant.Target.execute(Target.java:357)
            at org.apache.tools.ant.Target.performTasks(Target.java:385)
            at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
            at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
            at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
            at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
            at org.apache.tools.ant.Main.runBuild(Main.java:758)
            at org.apache.tools.ant.Main.startAnt(Main.java:217)
            at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
            at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
    Caused by: java.lang.ClassNotFoundException: com.sun.javadoc.Type
            at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1400)
            at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1341)
            at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1088)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
            ... 27 more
    Total time: 0 seconds
    Eclipse Installation details:
    *** System properties:
    eclipse.application=org.eclipse.ui.ide.workbench
    eclipse.buildId=M20110909-1335
    eclipse.commands=-os
    linux
    -ws
    gtk
    -arch
    x86_64
    -showsplash
    -launcher
    {home}/Development/oepe-indigo/eclipse
    -name
    Eclipse
    --launcher.library
    {home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so
    -startup
    {home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
    --launcher.overrideVmargs
    -exitdata
    1e418010
    -vm
    /usr/bin/java
    eclipse.home.location=file:{home}/Development/oepe-indigo/
    eclipse.launcher={home}/Development/oepe-indigo/eclipse
    eclipse.launcher.name=Eclipse
    [email protected]/../p2/
    eclipse.p2.profile=PlatformProfile
    eclipse.product=org.eclipse.platform.ide
    eclipse.startTime=1374623921455
    eclipse.vm=/usr/bin/java
    eclipse.vmargs=-Xms256m
    -Xmx768m
    -XX:MaxPermSize=512m
    -Dsun.lang.ClassLoader.allowArraySyntax=true
    -Dweblogic.home={home}/Oracle/Middleware/wlserver_10.3
    -Dharvester.home={home}/Oracle/Middleware/Oracle_OSB1/harvester
    -Dosb.home={home}/Oracle/Middleware/Oracle_OSB1
    -Dosgi.bundlefile.limit=750
    -Dosgi.nl=en_US
    -Dmiddleware.home={home}/Oracle/Middleware
    -jar
    {home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
    equinox.use.ds=true
    file.encoding=UTF-8
    file.encoding.pkg=sun.io
    file.separator=/
    guice.disable.misplaced.annotation.check=true
    harvester.home={home}/Oracle/Middleware/Oracle_OSB1/harvester
    http.nonProxyHosts=localhost
    java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
    java.awt.printerjob=sun.print.PSPrinterJob
    java.class.path={home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
    java.class.version=50.0
    java.endorsed.dirs=/usr/lib/jvm/jdk1.6.0_45/jre/lib/endorsed
    java.ext.dirs=/usr/lib/jvm/jdk1.6.0_45/jre/lib/ext:/usr/java/packages/lib/ext
    java.home=/usr/lib/jvm/jdk1.6.0_45/jre
    java.io.tmpdir=/tmp
    java.library.path=/usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/server:/usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64:/usr/lib/jvm/jdk1.6.0_45/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    java.protocol.handler.pkgs=null|com.bea.wli.sb.resources.url|com.bea.wli.sb.resources.jca.upgrade.url|weblogic.utils|weblogic.utils|weblogic.utils|weblogic.net|weblogic.net
    java.runtime.name=Java(TM) SE Runtime Environment
    java.runtime.version=1.6.0_45-b06
    java.specification.name=Java Platform API Specification
    java.specification.vendor=Sun Microsystems Inc.
    java.specification.version=1.6
    java.vendor=Sun Microsystems Inc.
    java.vendor.url=http://java.sun.com/
    java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
    java.version=1.6.0_45
    java.vm.info=mixed mode
    java.vm.name=Java HotSpot(TM) 64-Bit Server VM
    java.vm.specification.name=Java Virtual Machine Specification
    java.vm.specification.vendor=Sun Microsystems Inc.
    java.vm.specification.version=1.0
    java.vm.vendor=Sun Microsystems Inc.
    java.vm.version=20.45-b01
    javax.rmi.CORBA.PortableRemoteObjectClass=weblogic.iiop.PortableRemoteObjectDelegateImpl
    javax.rmi.CORBA.UtilClass=weblogic.iiop.UtilDelegateImpl
    jna.platform.library.path=/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/lib64:/usr/lib:/lib
    line.separator=
    middleware.home={home}/Oracle/Middleware
    oracle.eclipse.tools.weblogic.ui.isWebLogicServer=true
    org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog
    org.eclipse.equinox.launcher.splash.location={home}/Development/oepe-indigo/plugins/org.eclipse.platform_3.7.1.v201109091335/splash.bmp
    org.eclipse.equinox.simpleconfigurator.configUrl=file:org.eclipse.equinox.simpleconfigurator/bundles.info
    org.eclipse.m2e.log.dir={home}/workspace/pragma/.metadata/.plugins/org.eclipse.m2e.logback.configuration
    org.eclipse.update.reconcile=false
    org.omg.CORBA.ORBClass=weblogic.corba.orb.ORB
    org.omg.CORBA.ORBSingletonClass=weblogic.corba.orb.ORB
    org.osgi.framework.executionenvironment=OSGi/Minimum-1.0,OSGi/Minimum-1.1,OSGi/Minimum-1.2,JRE-1.1,J2SE-1.2,J2SE-1.3,J2SE-1.4,J2SE-1.5,JavaSE-1.6
    org.osgi.framework.language=en
    org.osgi.framework.os.name=Linux
    org.osgi.framework.os.version=3.8.0
    org.osgi.framework.processor=x86-64
    org.osgi.framework.system.capabilities=osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0, 1.1, 1.2",osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6"
    org.osgi.framework.system.packages=javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.auth.kerberos,javax.security.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.transaction,javax.transaction.xa,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.namespace,javax.xml.parsers,javax.xml.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.ws.wsaddressing,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.portable,org.omg.CORBA.TypeCodePackage,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServer.portable,org.omg.PortableServer.ServantLocatorPackage,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views,org.w3c.dom.xpath,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers
    org.osgi.framework.uuid=901615cd-f3f3-0012-11b6-a3bca4d97ac1
    org.osgi.framework.vendor=Eclipse
    org.osgi.framework.version=1.6.0
    org.osgi.supports.framework.extension=true
    org.osgi.supports.framework.fragment=true
    org.osgi.supports.framework.requirebundle=true
    os.arch=amd64
    os.name=Linux
    os.version=3.8.0-26-generic
    osb.home={home}/Oracle/Middleware/Oracle_OSB1
    osgi.arch=x86_64
    osgi.bundlefile.limit=750
    osgi.bundles=reference:file:javax.transaction_1.1.1.v201105210645.jar,reference:file:org.eclipse.equinox.simpleconfigurator_1.0.200.v20110502-1955.jar@1:start
    osgi.bundles.defaultStartLevel=4
    osgi.bundlestore={home}/Development/oepe-indigo/configuration/org.eclipse.osgi/bundles
    osgi.configuration.area=file:{home}/Development/oepe-indigo/configuration/
    osgi.framework=file:{home}/Development/oepe-indigo/plugins/org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar
    osgi.framework.extensions=reference:file:javax.transaction_1.1.1.v201105210645.jar
    osgi.framework.shape=jar
    osgi.framework.version=3.7.1.R37x_v20110808-1106
    osgi.frameworkClassPath=., file:{home}/Development/oepe-indigo/plugins/javax.transaction_1.1.1.v201105210645.jar
    osgi.install.area=file:{home}/Development/oepe-indigo/
    osgi.instance.area=file:{home}/workspace/pragma/
    osgi.instance.area.default=file:{home}/workspace/
    osgi.logfile={home}/workspace/pragma/.metadata/.log
    osgi.manifest.cache={home}/Development/oepe-indigo/configuration/org.eclipse.osgi/manifests
    osgi.nl=en_US
    osgi.nl.user=en_US
    osgi.os=linux
    osgi.splashLocation={home}/Development/oepe-indigo/plugins/org.eclipse.platform_3.7.1.v201109091335/splash.bmp
    osgi.splashPath=platform:/base/plugins/org.eclipse.platform
    osgi.syspath={home}/Development/oepe-indigo/plugins
    osgi.tracefile={home}/workspace/pragma/.metadata/trace.log
    osgi.ws=gtk
    path.separator=:
    securerandom.source=file:/dev/./urandom
    socksNonProxyHost=localhost
    sun.arch.data.model=64
    sun.boot.class.path=/usr/lib/jvm/jdk1.6.0_45/jre/lib/resources.jar:/usr/lib/jvm/jdk1.6.0_45/jre/lib/rt.jar:/usr/lib/jvm/jdk1.6.0_45/jre/lib/sunrsasign.jar:/usr/lib/jvm/jdk1.6.0_45/jre/lib/jsse.jar:/usr/lib/jvm/jdk1.6.0_45/jre/lib/jce.jar:/usr/lib/jvm/jdk1.6.0_45/jre/lib/charsets.jar:/usr/lib/jvm/jdk1.6.0_45/jre/lib/modules/jdk.boot.jar:/usr/lib/jvm/jdk1.6.0_45/jre/classes
    sun.boot.library.path=/usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64
    sun.cpu.endian=little
    sun.cpu.isalist=
    sun.desktop=gnome
    sun.io.unicode.encoding=UnicodeLittle
    sun.java.command={home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher {home}/Development/oepe-indigo/eclipse -name Eclipse --launcher.library {home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505/eclipse_1407.so -startup {home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.overrideVmargs -exitdata 1e418010 -vm /usr/bin/java -vmargs -Xms256m -Xmx768m -XX:MaxPermSize=512m -Dsun.lang.ClassLoader.allowArraySyntax=true -Dweblogic.home={home}/Oracle/Middleware/wlserver_10.3 -Dharvester.home={home}/Oracle/Middleware/Oracle_OSB1/harvester -Dosb.home={home}/Oracle/Middleware/Oracle_OSB1 -Dosgi.bundlefile.limit=750 -Dosgi.nl=en_US -Dmiddleware.home={home}/Oracle/Middleware -jar {home}/Development/oepe-indigo//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
    sun.java.launcher=SUN_STANDARD
    sun.jnu.encoding=UTF-8
    sun.lang.ClassLoader.allowArraySyntax=true
    sun.management.compiler=HotSpot 64-Bit Tiered Compilers
    sun.os.patch.level=unknown
    svnkit.http.methods=Basic
    svnkit.library.gnome-keyring.enabled=false
    user.country=AR
    user.dir={home}/Development/oepe-indigo
    user.home={home}
    user.language=es
    user.name={username}
    user.timezone=America/Argentina/Buenos_Aires
    weblogic.home={home}/Oracle/Middleware/wlserver_10.3
    Thanks!!

    run this one in command prompt and then convert the applet using converter tool
    JC_HOME = C:\java_card_kit-2_2_2\bin\
    set CLASSES=%JCHOME%\lib\apduio.jar;%JC_HOME%\lib\apdutool.jar;%JC_HOME%\lib\jcwde.jar;%JC_HOME%\lib\converter.jar;%JC_HOME%\lib\scriptgen.jar;%JC_HOME%\lib\offcardverifier.jar;%JC_HOME%\lib\api.jar;%JC_HOME%\lib\installer.jar;%JC_HOME%\lib\capdump.jar;
    D:\NareshPalle\jcardRE\Smart\src>java -classpath %_CLASSES% com.sun.javacard.con
    verter.Converter -out EXP JCA CAP -exportpath .\exp -applet 0x0a:0x00:0x00:0x00:0x0e:0x01:0x02:
    0x03:0x04:0x05:0x06 PackageName appletName 0x01:0x02:0x03:0x04:0x05:0x0
    6:0x07:0x08 1.0
    or
    go to following directory and run the converter tool in command prompt
    step 1: cd C:\java_card_kit-2_2_2\bin\
    then run this command under the above directory
    step 2:converter -classdir E:\Pathof Your applet class file -out EXP JCA CAP -exportpath E:\path of exp files folder -applet AID PackageName AppletName PackAID major.minor no
    For more doubts mail me....
    *[removed by moderator]*
    Thanks and Regards
    NareshPalle
    Edited by: EJP on 31/03/2012 20:09: removed your email address. Unless you like spam and unless you think these forums are provided for your personal benefit only, posting an email address here serves no useful purpose whatsoever.

  • Problem generating javadoc

    I am using jdk 1.6.0.03 for development
    I am facing some problem while creating java doc
    details of the problem can be understood by details given below
    upon issuing command the following output occurs
    Loading source files for package applet...
    [parsing started C:\java\applettest\AppletTest.java]
    [parsing completed 31ms]
    Constructing Javadoc information...
    [search path for source files: C:\java\applettest]
    [search path for class files: C:\Program Files\Java\jdk1.6.0_03\jre\lib\resources.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\rt.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\sunrsasign.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\jsse.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\jce.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\charsets.jar,C:\Program Files\Java\jdk1.6.0_03\jre\classes,C:\Program Files\Java\jdk1.6.0_03\jre\lib\ext\dnsns.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\ext\localedata.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\ext\sunjce_provider.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\ext\sunmscapi.jar,C:\Program Files\Java\jdk1.6.0_03\jre\lib\ext\sunpkcs11.jar,C:\Program]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/applet/Applet.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/Button.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/Color.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/Graphics.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/Panel.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/javax/accessibility/Accessible.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/Container.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/Component.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/image/ImageObserver.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/awt/MenuContainer.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Override.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Annotation.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Target.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/ElementType.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Retention.class)]
    [loading C:\Program Files\Java\jdk1.6.0_03\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/RetentionPolicy.class)]
    Standard Doclet version 1.6.0_03
    Building tree for all the packages and classes...
    Generating C:\java\applettest/\AppletTest.html...
    java.lang.IllegalArgumentException
         at sun.net.www.ParseUtil.decode(ParseUtil.java:189)
         at sun.misc.URLClassPath$FileLoader.<init>(URLClassPath.java:953)
         at sun.misc.URLClassPath$3.run(URLClassPath.java:326)
         at java.security.AccessController.doPrivileged(Native Method)
         at sun.misc.URLClassPath.getLoader(URLClassPath.java:320)
         at sun.misc.URLClassPath.getLoader(URLClassPath.java:297)
         at sun.misc.URLClassPath.findResource(URLClassPath.java:144)
         at java.net.URLClassLoader$2.run(URLClassLoader.java:362)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findResource(URLClassLoader.java:359)
         at java.lang.ClassLoader.getResource(ClassLoader.java:977)
         at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
         at javax.xml.parsers.SecuritySupport$4.run(SecuritySupport.java:96)
         at java.security.AccessController.doPrivileged(Native Method)
         at javax.xml.parsers.SecuritySupport.getResourceAsStream(SecuritySupport.java:89)
         at javax.xml.parsers.FactoryFinder.findJarServiceProvider(FactoryFinder.java:250)
         at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:223)
         at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:128)
         at com.sun.tools.doclets.internal.toolkit.builders.LayoutParser.parseXML(LayoutParser.java:72)
         at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.build(ClassBuilder.java:108)
         at com.sun.tools.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:155)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:164)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:106)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
         at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
         at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:215)
         at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:91)
         at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
         at com.sun.tools.javadoc.Start.begin(Start.java:128)
         at com.sun.tools.javadoc.Main.execute(Main.java:41)
         at com.sun.tools.javadoc.Main.main(Main.java:31)
    com.sun.tools.doclets.internal.toolkit.util.DocletAbortException
         at com.sun.tools.doclets.internal.toolkit.builders.LayoutParser.parseXML(LayoutParser.java:79)
         at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.build(ClassBuilder.java:108)
         at com.sun.tools.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:155)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:164)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:106)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
         at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
         at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:215)
         at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:91)
         at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
         at com.sun.tools.javadoc.Start.begin(Start.java:128)
         at com.sun.tools.javadoc.Main.execute(Main.java:41)
         at com.sun.tools.javadoc.Main.main(Main.java:31)
    com.sun.tools.doclets.internal.toolkit.util.DocletAbortException
         at com.sun.tools.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:159)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:164)
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:106)[done in 1094 ms]
         at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
         at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
         at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:215)
         at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:91)
         at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
         at com.sun.tools.javadoc.Start.begin(Start.java:128)
         at com.sun.tools.javadoc.Main.execute(Main.java:41)
         at com.sun.tools.javadoc.Main.main(Main.java:31)

    this is just a simple test applet to check generation of javadoc
    import java.applet.Applet;
    import java.awt.Button;
    import java.awt.Color;
    import java.awt.Graphics;
    * @author Pushpraj
    public class AppletTest extends Applet{
         public void start() {
              super.start();
              setBackground(Color.gray);
              add(new Button("Click"));
         public void paint(Graphics g)
              String prm=getParameter("abc");
              if(prm!=null)
                   g.drawString(prm,10,10);
    }

  • JavaDoc: inherit method comment from jdk classes?

    My goal is to let custom classes inherit method comments from overridden methods of jdk classes. From the doctool documentation, I would assume that the way to go is to set the path to the jdk sources in the -sourcepath option. My problem is that this doesn't seem to work at all - looks like JavaDoc is simply not parsing the JDK source files at all.
    The relevant (methinks :) part of the verbose output:
    // these are the input options as created by ant run from eclipse under win2k
    Executing 'D:\jdk\150_u6\bin\javadoc.exe' with arguments:
    '-d'
    'D:\JavaWorkspace\harvest\eclipse\javadesktop\jdnc-swingx\dist\javadoc'
    '-use'
    '-splitindex'
    '-verbose'
    '-classpath'
    'D:\JavaWorkspace\harvest\eclipse\javadesktop\jdnc-swingx\lib\optional\MultipleGradientPaint.jar'
    '-sourcepath'
    'D:\jdk_doc\srcjdk1.5.0;D:\JavaWorkspace\harvest\eclipse\javadesktop\jdnc-swingx\src\java'
    '-link'
    'file:D:/jdk_doc/jdk1.5b/docs/api'
    '-source'
    '1.5'
    'org.jdesktop.swingx.table'
    The ' characters around the executable and arguments are
    not part of the command.
    // following is the javadoc output
       [javadoc] [search path for source files: [D:\jdk_doc\srcjdk1.5.0,
    D:\JavaWorkspace\harvest\eclipse\javadesktop\jdnc-swingx\src\java]]
       [javadoc] [search path for class files:
    [D:\jdk\150_u6\jre\lib\rt.jar, D:\jdk\150_u6\jre\lib\jsse.jar,
    D:\jdk\150_u6\jre\lib\jce.jar, D:\jdk\150_u6\jre\lib\charsets.jar,
    D:\jdk\150_u6\jre\lib\ext\dnsns.jar,
    D:\jdk\150_u6\jre\lib\ext\junit.jar,
    D:\jdk\150_u6\jre\lib\ext\localedata.jar,
    D:\jdk\150_u6\jre\lib\ext\sunjce_provider.jar,
    D:\jdk\150_u6\jre\lib\ext\sunpkcs11.jar,
    D:\JavaWorkspace\harvest\eclipse\javadesktop\jdnc-swingx\lib\optional\MultipleGradientPaint.jar]]
       [javadoc] Loading source files for package org.jdesktop.swingx.table...
       [javadoc] [parsing started
    D:\JavaWorkspace\harvest\eclipse\javadesktop\jdnc-swingx\src\java\org\jdesktop\swingx\table\ColumnControlButton.java]
    ..snip..
       [javadoc] Constructing Javadoc information...
       [javadoc] [loading
    D:\jdk\150_u6\jre\lib\rt.jar(java/awt/ComponentOrientation.class)]
       [javadoc] [loading
    D:\jdk\150_u6\jre\lib\rt.jar(java/awt/Dimension.class)]
       [javadoc] [loading D:\jdk\150_u6\jre\lib\rt.jar(java/awt/Insets.class)]It doesn't seem to matter if javadoc is run from the commandline or through an ant task, the output is basically the same.
    The loading from the rt.jar might be the problem, at least when comparing to a report about (maybe exactly the same) problem back in 2004
    http://forum.java.sun.com/thread.jspa?forumID=41&threadID=536074
    The posters stated that the -sourcepath didn't appear to work under win, while it did work under Solaris. When working, the [loading..] output contained the path to the sources instead of to the classes.
    Any help, hint, thought, comment highly welcome!
    Thanks in advance
    Jeanette

    Hi Doug,
    thanks for your prompt reply!
    My first question is what does the source tree look
    below this directory:
    -sourcepath 'D:\jdk_doc\srcjdk1.5.0
    de]
    To work, the the full path to, say, String.java,
    would need to be:D:\jdk_docs\srcjdk1.5.0\java\lang\String.java
    Because -sourcepath must point to the root of the
    source tree. Is this what you have?
    exactly, that's the case. In the meantime, I tried to put the sources somewhere relative to the classes (to exlude the possibility that the absolute path poses a problem)I want to document - to no avail.
    >
    Are you thinking that the class files are loaded from
    rt.jar rather than the source .java files from the
    source tree?
    well, you are the expert to interpret the output :-) All I can be sure of is that this looks similar to output (for windows) in the old forum thread I mentioned and similar to a couple of bug reports. f.i.
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5079630 (which is closed as a duplicate) or
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5105600 which is still open (but probably should be closed - it's a usage error to point to the zipped sources).
    Hmm... thinking aloud: comparing my output to the output of the latter (it's quite analogous) it seems that in both cases the sources aren't found .. and the javadoctool falls back to get some search the missing information on the classpath. Maybe the question is: what could possibly go wrong (windows only) to not find the extracted sources (they are definitely there in my context ;-)?
    You might try setting -bootclasspath to the empty
    string, as describe here:
    http://java.sun.com/j2se/javadoc/faq/#bootclasspath
    I'll give it a try. BTW, this problem cropped up in the SwingLabs project, we are collectively scratching our heads in:
    http://forums.java.net/jive/thread.jspa?threadID=18409
    Thanks again!
    Jeanette

  • Attempting to verify a digital signature in JSSE

    Situation: In a nutshell I cannot get signature verification to work, and I'm not sure what I'm doing wrong.
    Background: I'm trying to recreate functionality in Java that currently exists in C/C++, using the OpenSSL vxcrypto library. I've written code to demonstrate the problem. The code below demonstrates what works in C, and what doesn't work in Java. In both cases, I read all of the input data (the public key, the SHA-1 hashed data that was previously signed by my private key, and the signature) as raw bytes from binary files. As you can see in the code, the Java program is reading this data from the exact same files as is the C program.
    Signature: 128 bytes
    Signed data: SHA-1 hashed to produce 20 bytes, with those 20 bytes being what was signed by my private key.
    Public key: 162 bytes
    This works fine:
    * OpenSSLDemo.cpp
    #include "stdafx.h"
    #include <stdio.h>
    #include <openssl/rsa.h>
    #include <openssl/x509.h>
    #define HASHED_DATA_SIZE   20
    #define SIGNATURE_SIZE     128
    #define PUBLIC_KEY_SIZE    162
    * Proper error-checking and buffer guarding omitted for simplicity.
    int main(int argc, char * argv[])
         * Allocate arrays to store the raw input bytes.
        unsigned char hashed_data[HASHED_DATA_SIZE];
        unsigned char signature[SIGNATURE_SIZE];
        unsigned char public_key[PUBLIC_KEY_SIZE];
         * Read the binary files into their respective arrays.
        FILE * fp = fopen("c:\\hasheddata.bin", "rb");
        if (HASHED_DATA_SIZE != fread(hashed_data, 1, HASHED_DATA_SIZE + 1, fp))
            printf("Read of hashed data was NOT exactly 20 bytes.\n");
        fclose(fp);
        fp = fopen("c:\\signature.bin", "rb");
        if (SIGNATURE_SIZE != fread(signature, 1, SIGNATURE_SIZE + 1, fp))
            printf("Read of hashed data was NOT exactly 128 bytes.\n");
        fclose(fp);
        fp = fopen("c:\\pubkey.bin", "rb");
        if (PUBLIC_KEY_SIZE != fread(public_key, 1, PUBLIC_KEY_SIZE + 1, fp))
            printf("Read of hashed data was NOT exactly 162 bytes.\n");
        fclose(fp);
         * Create OpenSSL RSA public key structure from my raw public key
         * bytes.
        RSA * rsa_struct_ptr = NULL;
        const unsigned char * public_key_pointer = public_key;
        if (NULL == d2i_RSA_PUBKEY(&rsa_struct_ptr, &public_key_pointer,
                                   PUBLIC_KEY_SIZE))
            printf("Creation of RSA public key structure FAILED!\n");
            return -1;
         * Verify the signature against the hashed data that was previously
         * signed with my private key.
        if (!RSA_verify(NID_sha1, hashed_data, HASHED_DATA_SIZE,
                        signature, SIGNATURE_SIZE, rsa_struct_ptr))
            printf("Signature verification FAILED!\n");
            return 1;
        printf("Signature successfully verified.\n");
        return 0;
    I have translated the above program to Java as follows:
    import java.io.File;
    import java.io.RandomAccessFile;
    import java.security.KeyFactory;
    import java.security.Signature;
    import java.security.PublicKey;
    import java.security.spec.X509EncodedKeySpec;
    public class JSSEDemo
        public JSSEDemo()
        public static final void main(String [] args)
            // Thorough exception handling omitted for simplicity.
            try
                // Read raw data from files into respective byte arrays
                byte[] hashedData =
                    new byte[(int) (new File("c:\\hasheddata.bin").length())];
                new RandomAccessFile("c:\\hasheddata.bin",
                                                     "rw").readFully(hashedData);
                assert(hashedData.length == 20);
                byte[] signature =
                    new byte[(int) (new File("c:\\signature.bin").length())];
                new RandomAccessFile("c:\\signature.bin",
                                                    "rw").readFully(signature);
                assert(signature.length == 128);
                byte[] publicKey =
                    new byte[(int) (new File("c:\\pubkey.bin").length())];
                new RandomAccessFile("c:\\pubkey.bin", "rw").readFully(publicKey);
                assert(publicKey.length == 162);
                // Create java.security.PublicKey object from the publicKey
                // byte array.
                X509EncodedKeySpec x509PublicKeySpec =
                                               new X509EncodedKeySpec(publicKey);
                KeyFactory keyFactory = KeyFactory.getInstance("RSA");
                PublicKey pubKey = keyFactory.generatePublic(x509PublicKeySpec);
                assert(pubKey.getEncoded().length == 162);
                // Create java.security.Signature object and verify signature.
                Signature sig = Signature.getInstance("SHA1withRSA");
                sig.initVerify(pubKey);
                sig.update(hashedData);
                if (sig.verify(signature))
                    System.out.println("Signature successfully verified.");
                else
                    System.out.println("Signature verification FAILED!");
            catch(Exception exception)
                System.out.println(exception.toString());
    And this Java one does not work, as the call to sig.verify() always returns false. Can anyone tell what I'm doing wrong?
    - Michael

    OK, I thought I'd post the answer in case anyone (most likely, OpenSSL users) ever has a similar problem and comes across this thread while searching the web or something:
    Note that in the code samples I used the variable name hashed_data/hashedData to describe the actual data against which my signature needs to be verified. I called them that because the data in that variable is not the original text string, but rather the 20-byte result of SHA1 hashing that original text string. Of course, it is this 20-byte hash result that is the thing that actually gets signed, and then against which the signature is later verified.
    Because of that, when you call RSA_verify in OpenSSL, you pass it not the original text string bytes, but rather the 20-byte SHA1 hash of that text string. That hash is what is actually going to be checked in the end, so that's what it expects as input. I was (erroneously) expecting the same thing in JSSE. Thus, when I called Signature.update() to give it the data to be verified, I gave it not the original text string bytes, but rather the 20-byte SHA1 hash of that text string, paralleling what I do in OpenSSL.
    However, in JSSE, since you create your Signature object with "SHA1withRSA", it's smart enough to be able to accept the actual original text bytes and know to do the SHA1 hash on that for you. So since I had SHA1 hashed my string myself first, then passed that hash result into update(), my data ultimately got hashed twice, and that's why the signature verification didn't work.
    I don't see anything in the Signature javadoc that makes it explicitly clear that the SHA1 hash will be taken care of for you. However, I'll grant that this may simply be because doing it that way is actually what is intuitive. Had I not been coming out of a "this is how I did it in OpenSSL" background, I probably would have fully expected it to work exactly the way it does in JSSE, and never would have had a problem.
    Oh well, at least the problem is solved. So I can say that I did get my $50 worth from Sun's paid support service.
    8-)
    - Michael

  • Sources/docs of JCE & JSSE

    I can find neither the sources nor the javadoc of JCE and JSSE. On the pages of sun there are just broken or missleading links. There are some sources on third party pages, but I'd like to get a complete and up to date code.
    I'm sure, I had once the JCE source and docs (obtained from sun in a time they had better web pages), but after an update I lost them.

    There is not exist other .so
    My directory
    [root@ped-02 ~]# cd /opt/web_agents/apache22_agent/lib/
    apache22_agent.jar opensso-installtools.jar
    libamapc22.so opensso-installtools-launcher.jar
    My Configuration dsame.conf
    LoadModule dsame_module /opt/web_agents/apache22_agent/lib/libamapc22.so
    Agent_Config_File /opt/web_agents/apache22_agent/Agent_006/config/AMAgent.properties

  • User comments in Javadoc

    L.S.,
    Sometimes I feel the need to extend some existing javadoc with a note of my own because sometimes the existing javadoc is not very clear and I am unable to improve because it is from another vendor.
    I think it would be nice if I could somehow add user notes to existing javadoc without altering the original generated HTML files.
    Please discuss.
    Sincerely,
    Patrick Holthuizen

    Check out the -tag option. This lets you include custom tags of your owns design, or change the behavior of existing ones.

  • Https Connection from servlets using JSSE.

    Hi all,
    Although my question is the same as the QOW for this week, there is an error "unsupported keyword EMAIL" returned when i try to establish a https connection using servlet. The error log is as follow:
    =====================================
    java.io.IOException: unsupported keyword EMAIL
    at com.sun.net.ssl.internal.ssl.AVA.<init>([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.ssl.RDN.<init>([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.ssl.X500Name.a([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.ssl.X500Name.<init>([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.www.protocol.https.HttpsClient.a([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.connect([DashoPro-V1.2-120198])
    at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnection.getInputStream([DashoPro-V1.2-120198])
    at URLReader.doGet(URLReader.java:78)
    ===================================
    Does anyone know the meaning of this error?
    I try to write a java application using the similar code and it totally works fine(i can connect to the server and obtain the page). Does JSSE support Java Servlet? Or this is the problem of tomcat server? FYI, I'm using
    Tomcat 3.2.2
    Java SDK 1.3
    Many thanks!
    Ethan
    p.s. Here is the source for my program
    import java.io.*;
    import java.net.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.net.*;
    import javax.net.ssl.*;
    import com.sun.net.ssl.*;
    public class URLReader extends HttpServlet{
    private PrintWriter out = null;
    public void doGet(HttpServletRequest req, HttpServletResponse res){
    res.setContentType("text/html");
    res.setHeader("Cache-Control", "no-cache");
    res.setHeader("Progma", "no-cache");
    out = res.getWriter();
    java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    System.setProperty("javax.net.ssl.trustStore", "File_for_keyStore");
    System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
    try {
         URL url = new URL("https://server_name:port/index.htm");
         HttpsURLConnection urlconnection = (HttpsURLConnection)url.openConnection();
         BufferedReader in = new BufferedReader(new InputStreamReader(urlconnection.getInputStream()));
         String outputLine ;
         while ( (outputLine = in.readLine()) != null){
         out.println("There is the result: "+outputLine);
         in.close();
    catch(Exception e){
    public void doPost(HttpServletRequest req, HttpServletResponse res){
    }

    I was just having this issue, after months of error-free ssl behavior, on a new machine i was installing (Note: that I was running the IBM jdk1.3) It turns out that when I was editing the java.security file to know about JCE/JSSE providers i had the providers in the wrong order. The Error causing sequence was:
    security.provider.1=com.sun.net.ssl.internal.ssl.Provider
    security.provider.2=com.ibm.crypto.provider.IBMJCA
    # Extra provider added ibm@33894
    security.provider.3=com.ibm.crypto.provider.IBMJCE
    # extra provider i added
    security.provider.4=sun.security.provider.Sun
    The issue disappeared when i changed the order to:
    security.provider.1=sun.security.provider.Sun
    security.provider.2=com.sun.net.ssl.internal.ssl.Provider
    security.provider.3=com.ibm.crypto.provider.IBMJCA
    # Extra provider added ibm@33894
    security.provider.4=com.ibm.crypto.provider.IBMJCE
    hope that helps!
    --john molnar
    Trellis Network Security

  • JSSE Performance 1.3.1 v. 1.4.1

    We are in the process of moving an application that uses JSSE SSL sockets from 1.3.1 to 1.4.1. It seems that socket creation time went through the roof by just switching the JDK's:
    Running on a LAN, in 1.3.1, after the initial socket, it takes <50ms for sockets to handshake and connect. In 1.4.1 it takes 4 to 5 seconds (factor of 100). The code doesn't change. We've also tested having the server side running on 1.3.1 and the client using 1.4.1 and we get the same results, 4 to 5 seconds for a socket to connect.
    Has anybody else run into this and is there a solution or workaround? 4 to 5 seconds on a LAN seems way too much, what connection times should be expected for SSL sockets on a LAN? Keep in mind, these times are NOT for the first socket connection, we typically get around 20 seconds for that. So, this should not have anything to do with SecureRandom initialization.
    thanks in advance,
    Gerald Holmann

    I'm facing the same situation on v1.4.1. According to iptrace in my situation, it takes about 5 minutes between SYN and Client Hello. Windows is trying to resolve domain name of WebSEAL/server with NetBIOS protocol for 5 minutes. It seems to be resolved by setting up DNS server or hosts file in client. But I haven't tried it yet and I haven't tried on v1.3.1.
    Is there anyone to have tried it? Is there any further information?

  • DocFlex/Javadoc 1.5.6, a multi-format doclet development tool and more

    DocFlex/Javadoc is both a multi-format Javadoc Doclet and a rapid doclet development tool, which allows easy creation of professional quality Java API documentation generated by Javadoc in various output formats.
    More in this article:
    Key Features
    Availability
    This Version
    What is DocFlex?
    Main Concepts
    Other Applications
    Links
    KEY FEATURES
    Template-driven doclet architecture
    - Actual doclets are created in the form of special templates interpreted by the DocFlex Doclet, which is the template interpreter / output generator wrapped in the form of a Javadoc Doclet.
    - The high quality graphic Template Designer allows you to visually design most of things, whose development was possible so far only by direct Java coding.
    - The templates are designed independently on a particular output format. All formatting is specified in some universal way using properties of template components. During the generation, it is rendered with the suitable features available in the selected output format.
    - The elaborated support of template parameters (including multivalued list parameters). The parameters are defined and accessed within templates to adjust dynamic properties of template components. Most of options previously used to control an ordinary doclet now simply become template parameters!
    - The possibility to call templates from one another. This feature (along with the template parameters) makes possible re-using the same templates for different tasks as well as organizing template libraries.
    Data processing
    - The entire Doclet API is represented in the form of a virtual XML document (called Doclet DSM), on which the designing and processing of all templates is based.
    - Sophisticated capabilities for data querying and sorting based on an extension of XPath.
    - Full support of new Java 5.0 language features: Generic Types, Enums, Annotations.
    - Simultaneous support of Java 1.4 and Java 5.
    Creating hyperlinks
    - Generation of an extensive network of hyperlinks interconnecting the whole documentation.
    - The hyperlinks can be generated in all output formats that support them (this currently includes HTML and RTF).
    - The universal way of defining documentation cross-links based on the link/target keys specified in templates.
    - In RTF, the cross-links can be generated in the form of page number references, which effectively makes them usable even in the printed documentation.
    - In HTML, the possibility of loading several frame windows from a single hyperlink at once.
    Universal support of various formatting techniques
    - text formatting: fonts, colors, borders
    - paragraph formatting: margins, pagination control, borders, colors
    - border formatting: styles (solid, double, dashed, dotted), thickness, colors
    - tables: arbitrary cell layouts, borders, nested tables
    - lists: bulleted, numbered, delimited
    - document fields (RTF): page number, number of pages, TOC, etc.
    - page formatting: size, orientation, margins, headers/footers
    - formatting styles
    - rendering of embedded HTML, which means interpreting in non-HTML output formats (such as RTF) the HTML tags embedded in text data (e.g. documentation comments). Almost all HTML tags practically usable in doc-comments are supported.
    Inserting images
    - statically specified in templates
    - dynamically, obtained by <img> tags found in Java comments
    - supported image formats: GIF, PNG, JPG, WMF, EMF, BMP
    Output formats
    - HTML (both framed multi-file and single-file output)
    - RTF (version 1.6 - supported since Word 2000).
    - TXT (plain text), which may be particularly useful for various utilizations of the Java code information provided by the Doclet API generate XML files by it, or SQL files to import into a database).
    Standard Template Set
    - The ready-to-use Standard Template Set included in all editions of DocFlex/Javadoc allows you to immediately generate:
    (*) The framed HTML Java API documentation similar to that generated by the standard Javadoc.
    (*) The same documentation packed in a single HTML file.
    (*) The unmatched quality RTF JavaDoc.
    - Special features supported by standard templates:
    (*) Excluding classes/methods/fields by custom tags and annotations.
    (*) Selective omitting of package qualifiers.
    (*) Selective documenting of custom tags (similar to -tag option of Standard Doclet).
    - By modifying the standard templates, you can quickly customize the generated documentation according to your needs.
    Doclet GUI
    - Besides command line options, DocFlex Doclet supports an alternative user-friendly way to control the template-based doclets interactively -- the high quality Doclet GUI.
    - The Doclet GUI starts with the Generator Dialog, where you can specify all general settings (such as the main template, the output format and the output directory), start the generation, track its progress and stop at any moment you need.
    - The grid-tree-based Parameter Inspector invoked from the Generator Dialog for a selected template allows you to view the descriptions of all template parameters controlling the doclet and set their values according to the parameter data types.
    - The generator options specific for the selected output format can be set in the corresponding Format Option Inspector (also invoked from the Generator Dialog).
    - Once the generation is finished (or cancelled), you can start it again with different settings or a new main template without restarting the whole Javadoc.
    Integrations
    - With any system that runs Javadoc (in particular, see below)
    - Apache Ant
    - Apache Maven 2
    - Eclipse
    For lots more information, see DocFlex/Javadoc homepage: [http://www.filigris.com/products/docflex_javadoc/]
    AVAILABILITY
    DocFlex/Javadoc comes in two editions:
    (1) The full edition called "DocFlex/Javadoc" as it is. This is commercial software, which includes all the implemented functionality.
    (2) The reduced freeware edition called "DocFlex/Doclet". It includes only the output generator and can be used as an interpretor of any custom templates. It also includes the standard template set, which allows you to instantly use it as an HTML doclet (similar to the standard one, however with some special features) plus an excellent quality RTF doclet.
    Both editions are available for downloads on the page: [http://www.filigris.com/downloads/]
    THIS VERSION
    New features:
    - The template interpretor works 15-20% faster
    - Improvement of RTF output
    - Multi-valued (list) template parameters
    - Custom elements
    - Standard Templates: Selective documenting of custom tags (similar to -tag option of standard doclet)
    For more details, see product Readme | Change Log on the downloads page: [http://www.filigris.com/downloads/]
    WHAT IS DOCFLEX?
    DocFlex is an innovative technology for development of high quality template-driven documentation/report generators by any kind of data obtained from various software applications via the Java APIs they provide.
    MAIN CONCEPTS
    The whole DocFlex technology is based on four generalizations:
    (1) The mapping of an entire Java API onto a virtual XML-like representation made of some elements and attributes so as to process any such a representation in a universal way using techniques borrowed from the field of XML, like XPath (or more precisely, a conceptual analogue of XPath with some extensions not present in it).
    (2) The abstract formatting concept based on four layouts (flow of text, flow of paragraphs or paragraph-like objects, tables and lists), which can be rendered in most modern document formats (e.g. HTML, RTF, XSL-FO etc.)
    (3) The automatic generation of hyperlinks (or their page number reference equivalents) by matching the sets of keys produced from certain natural properties of the things (entities) being documented and hyper-linked.
    (4) The representation of the object controlling structure of the output generator (made on the first three principles) in the form of a plain-text template with a possibility to create and edit such templates using a graphic Template Designer, which visualizes the controlling objects (now becoming template components) in a form resembling the output they will produce.
    OTHER APPLICATIONS
    In fact, DocFlex/Javadoc is not the only application of DocFlex technology. The following is a summary of other DocFlex software:
    DocFlex/XML
    The SDK and runtime environment for rapid development and execution of template-driven automatic documentation/report generators by any data obtained from XML files.
    This is currently the most complex and advanced application of DocFlex technology. Actually, this tool can be considered a powerful alternative to XSLT. At least, it is definitely able to do what XSLT apparently not (for example, see “XSDDoc” below). We will publish a more detailed comparison “DocFlex/XML versus XSLT” with the next DocFlex/XML release, which is coming very soon.
    DocFlex/XML home page: [http://www.filigris.com/products/docflex_xml/]
    DocFlex/XML | XSDDoc
    A template set for DocFlex/XML that implements a high quality W3C XML Schema documentation generator in HTML and RTF output formats.
    For more details, please see: [http://www.filigris.com/products/docflex_xml/xsddoc/]
    DocFlex/XML | WSDLDoc
    A similar template set for DocFlex/XML that will implement a high-end WSDL documentation generator.
    This product is not released yet.
    DocFlex/Together
    A template-driven documentation generator for [Borland Together|http://www.borland.com/us/products/together/] (which is a UML modeling tool).
    This is the earliest application of DocFlex technology and probably the most beautiful one. It works only with Together Architect 1.x, which is now obsolete. Unfortunately, since Together 2005, Borland eliminated any open APIs (for unknown reasons). Because of this, further development of DocFlex/Together was impossible.
    DocFlex/Together home page: [http://www.filigris.com/products/docflex_together/]
    See also examples of the UML documentation generated with it: [http://www.filigris.com/products/docflex_together/examples/]
    The future DocFlex/UML is going to generate something like this as well.
    DocFlex/UML
    A template-driven UML documentation generator based on [Eclipse EMF|http://www.eclipse.org/emf/]. This tool is in early development stage yet. In a sense, it will continue DocFlex/Together with the focus on integration with other UML tools that use Eclipse EMF.
    LINKS
    This original article can be found at:
    [http://www.filigris.com/ann/docflex_javadoc_v1.5.6/]
    DocFlex/Javadoc home page:
    [http://www.filigris.com/products/docflex_javadoc/]
    DocFlex/XML home page:
    [http://www.filigris.com/products/docflex_xml/]
    DocFlex/XML | XSDDoc, the XML schema documentation generator:
    [http://www.filigris.com/products/docflex_xml/xsddoc/]
    Free downloads:
    [http://www.filigris.com/downloads/]

    Now, DocFlex/Javadoc v1.4 has been released specifically dedicated to Linux (Mac OS X) support:
    (*) Some early bugs have been fixed, which prevented it working properly under Linux.
    (*) A special RTF option was introduced to generate OpenOffice.org friendly RTF (see below)
    (*) Improved support for external document viewers.
    (*) Now, DocFlex/Javadoc software includes the shell script files prepared to quickly install and launch it under Linux
    New RTF option
    A new RTF output option "Tune output for MS Word� has been introduced. This option, actually, allows switching off that very tuning (which until now was the default mode) to produce an RTF friendly to open with other non MS Word applications, e.g. OpenOffice.org Writer under Linux.
    Read full announcement (and screenshot) by this link:
    http://www.filigris.com/ann/docflex_javadoc_v1.4/
    Regards,
    Leonid Rudy
    http://www.docflex.com

  • Using JSSE : "Invalid Netscape CertType extension for SSL client" Error

    Hi all,
    Im using the sample code given sun site for JSSE with Client Authentication. The sample as such it worked with the testkeys provided in that. But it didn't workout when I tried using other certificates.
    Both client and server certificates I generated from our internal Netscape Certificate Manager.
    Function of the server :
    The server will read a private key from the given keystore and starts listening on a port. This server will server only GET request.
    Function of the client :
    The Client sends a GET request to the server and gets the response back.
    I simply changed the key store name alone in the working sample code.
    It is not working.
    The Exception thrown on client side :
    D:\users\Jp\java\jssesamples\sockets\client\class>java SSLSocketClientWithClientAuth1 localhost 1089 /urls
    localhost
    1089
    /urls
    java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at com.sun.net.ssl.internal.ssl.OutputRecord.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_az.j(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(DashoA6275)
    at SSLSocketClientWithClientAuth1.main(SSLSocketClientWithClientAuth1.java:119)
    Exception thrown on server side :
    D:\users\Jp\java\jssesamples\sockets\server\class>java ClassFileServer 1089 . TLS true
    USAGE: java ClassFileServer port docroot [TLS [true]]
    If the third argument is TLS, it will start as
    a TLS/SSL file server, otherwise, it will be
    an ordinary file server.
    If the fourth argument is true,it will require
    client authentication as well.
    javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Invalid Netscape CertType extension for SSL client
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_aw.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_aw.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(DashoA6275)
    at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:406)
    at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:446)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.BufferedReader.fill(BufferedReader.java:136)
    at java.io.BufferedReader.readLine(BufferedReader.java:299)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
    at ClassServer.getPath(ClassServer.java:162)
    at ClassServer.run(ClassServer.java:109)
    at java.lang.Thread.run(Thread.java:536)
    Caused by: java.security.cert.CertificateException: Invalid Netscape CertType extension for SSL client
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkClientTrusted(DashoA6275)
    at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkClientTrusted(DashoA6275)
    ... 17 more
    error writing response: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateExce
    ption: Invalid Netscape CertType extension for SSL client
    javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: java.security.cert.Certificate
    Exception: Invalid Netscape CertType extension for SSL client
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.d(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.e(DashoA6275)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA6275)
    at com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA6275)
    at java.io.DataOutputStream.writeBytes(DataOutputStream.java:256)
    at ClassServer.run(ClassServer.java:128)
    at java.lang.Thread.run(Thread.java:536)
    Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Invalid Netscape CertType extension
    for SSL client
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_aw.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_aw.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA6275)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(DashoA6275)
    at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:406)
    at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:446)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.BufferedReader.fill(BufferedReader.java:136)
    at java.io.BufferedReader.readLine(BufferedReader.java:299)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
    at ClassServer.getPath(ClassServer.java:162)
    at ClassServer.run(ClassServer.java:109)
    ... 1 more
    Caused by: java.security.cert.CertificateException: Invalid Netscape CertType extension for SSL client
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.a(DashoA6275)
    at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkClientTrusted(DashoA6275)
    at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkClientTrusted(DashoA6275)
    ... 17 more
    The Client code :
    * @(#)SSLSocketClientWithClientAuth.java     1.5 01/05/10
    * Copyright 1995-2002 Sun Microsystems, Inc. All Rights Reserved.
    * Redistribution and use in source and binary forms, with or
    * without modification, are permitted provided that the following
    * conditions are met:
    * -Redistributions of source code must retain the above copyright
    * notice, this list of conditions and the following disclaimer.
    * -Redistribution in binary form must reproduct the above copyright
    * notice, this list of conditions and the following disclaimer in
    * the documentation and/or other materials provided with the
    * distribution.
    * Neither the name of Sun Microsystems, Inc. or the names of
    * contributors may be used to endorse or promote products derived
    * from this software without specific prior written permission.
    * This software is provided "AS IS," without a warranty of any
    * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
    * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
    * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
    * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
    * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
    * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR
    * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
    * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
    * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
    * THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
    * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    * You acknowledge that Software is not designed, licensed or
    * intended for use in the design, construction, operation or
    * maintenance of any nuclear facility.
    import java.net.*;
    import java.io.*;
    import javax.net.ssl.*;
    import javax.security.cert.X509Certificate;
    import java.security.KeyStore;
    * This example shows how to set up a key manager to do client
    * authentication if required by server.
    * This program assumes that the client is not inside a firewall.
    * The application can be modified to connect to a server outside
    * the firewall by following SSLSocketClientWithTunneling.java.
    public class SSLSocketClientWithClientAuth1 {
    public static void main(String[] args) throws Exception {
         String host = null;
         int port = -1;
         String path = null;
         for (int i = 0; i < args.length; i++)
         System.out.println(args);
         if (args.length < 3) {
         System.out.println(
              "USAGE: java SSLSocketClientWithClientAuth " +
              "host port requestedfilepath");
         System.exit(-1);
         try {
         host = args[0];
         port = Integer.parseInt(args[1]);
         path = args[2];
         } catch (IllegalArgumentException e) {
         System.out.println("USAGE: java SSLSocketClientWithClientAuth " +
              "host port requestedfilepath");
         System.exit(-1);
         try {
         * Set up a key manager for client authentication
         * if asked by the server. Use the implementation's
         * default TrustStore and secureRandom routines.
         SSLSocketFactory factory = null;
         try {
              SSLContext ctx;
              KeyManagerFactory kmf;
              KeyStore ks;
              char[] passphrase = "passphrase".toCharArray();
              ctx = SSLContext.getInstance("TLS");
              kmf = KeyManagerFactory.getInstance("SunX509");
              ks = KeyStore.getInstance("JKS");
    //          ks.load(new FileInputStream("testkeys"), passphrase);
              ks.load(new FileInputStream("clientkey"), passphrase);
              kmf.init(ks, passphrase);
              ctx.init(kmf.getKeyManagers(), null, null);
              factory = ctx.getSocketFactory();
         } catch (Exception e) {
              throw new IOException(e.getMessage());
         SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
         * send http request
         * See SSLSocketClient.java for more information about why
         * there is a forced handshake here when using PrintWriters.
         socket.startHandshake();
         PrintWriter out = new PrintWriter(
                        new BufferedWriter(
                        new OutputStreamWriter(
                        socket.getOutputStream())));
         out.println("GET " + path + " HTTP/1.1");
              /* Some internet sites throw bad request error for HTTP/1.1 req if hostname is not specified so the foll line */
              out.println("Host: " + host);
         out.println();
         out.flush();
         * Make sure there were no surprises
         if (out.checkError())
              System.out.println(
              "SSLSocketClient: java.io.PrintWriter error");
         /* read response */
         BufferedReader in = new BufferedReader(
                        new InputStreamReader(
                        socket.getInputStream()));
         String inputLine;
         while ((inputLine = in.readLine()) != null)
              System.out.println(inputLine);
         in.close();
         out.close();
         socket.close();
         } catch (Exception e) {
         e.printStackTrace();
    The Server code :
    * @(#)ClassFileServer.java     1.5 01/05/10
    * Copyright 1995-2002 Sun Microsystems, Inc. All Rights Reserved.
    * Redistribution and use in source and binary forms, with or
    * without modification, are permitted provided that the following
    * conditions are met:
    * -Redistributions of source code must retain the above copyright
    * notice, this list of conditions and the following disclaimer.
    * -Redistribution in binary form must reproduct the above copyright
    * notice, this list of conditions and the following disclaimer in
    * the documentation and/or other materials provided with the
    * distribution.
    * Neither the name of Sun Microsystems, Inc. or the names of
    * contributors may be used to endorse or promote products derived
    * from this software without specific prior written permission.
    * This software is provided "AS IS," without a warranty of any
    * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
    * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
    * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
    * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
    * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
    * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR
    * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
    * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
    * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
    * THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
    * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    * You acknowledge that Software is not designed, licensed or
    * intended for use in the design, construction, operation or
    * maintenance of any nuclear facility.
    import java.io.*;
    import java.net.*;
    import java.security.KeyStore;
    import javax.net.*;
    import javax.net.ssl.*;
    import javax.security.cert.X509Certificate;
    /* ClassFileServer.java -- a simple file server that can server
    * Http get request in both clear and secure channel
    * The ClassFileServer implements a ClassServer that
    * reads files from the file system. See the
    * doc for the "Main" method for how to run this
    * server.
    public class ClassFileServer extends ClassServer {
    private String docroot;
    private static int DefaultServerPort = 2001;
    * Constructs a ClassFileServer.
    * @param path the path where the server locates files
    public ClassFileServer(ServerSocket ss, String docroot) throws IOException
         super(ss);
         this.docroot = docroot;
    * Returns an array of bytes containing the bytes for
    * the file represented by the argument <b>path</b>.
    * @return the bytes for the file
    * @exception FileNotFoundException if the file corresponding
    * to <b>path</b> could not be loaded.
    public byte[] getBytes(String path)
         throws IOException
         System.out.println("reading: " + path);
         File f = new File(docroot + File.separator + path);
         int length = (int)(f.length());
         if (length == 0) {
         throw new IOException("File length is zero: " + path);
         } else {
         FileInputStream fin = new FileInputStream(f);
         DataInputStream in = new DataInputStream(fin);
         byte[] bytecodes = new byte[length];
         in.readFully(bytecodes);
         return bytecodes;
    * Main method to create the class server that reads
    * files. This takes two command line arguments, the
    * port on which the server accepts requests and the
    * root of the path. To start up the server: <br><br>
    * <code> java ClassFileServer <port> <path>
    * </code><br><br>
    * <code> new ClassFileServer(port, docroot);
    * </code>
    public static void main(String args[])
         System.out.println(
         "USAGE: java ClassFileServer port docroot [TLS [true]]");
         System.out.println("");
         System.out.println(
         "If the third argument is TLS, it will start as\n" +
         "a TLS/SSL file server, otherwise, it will be\n" +
         "an ordinary file server. \n" +
         "If the fourth argument is true,it will require\n" +
         "client authentication as well.");
         int port = DefaultServerPort;
         String docroot = "";
         if (args.length >= 1) {
         port = Integer.parseInt(args[0]);
         if (args.length >= 2) {
         docroot = args[1];
         String type = "PlainSocket";
         if (args.length >= 3) {
         type = args[2];
         try {
         ServerSocketFactory ssf =
              ClassFileServer.getServerSocketFactory(type);
         ServerSocket ss = ssf.createServerSocket(port);
         if (args.length >= 4 && args[3].equals("true")) {
              ((SSLServerSocket)ss).setNeedClientAuth(true);
         new ClassFileServer(ss, docroot);
         } catch (IOException e) {
         System.out.println("Unable to start ClassServer: " +
                   e.getMessage());
         e.printStackTrace();
    private static ServerSocketFactory getServerSocketFactory(String type) {
         if (type.equals("TLS")) {
         SSLServerSocketFactory ssf = null;
         try {
              // set up key manager to do server authentication
              SSLContext ctx;
              KeyManagerFactory kmf;
              KeyStore ks;
              char[] passphrase = "passphrase".toCharArray();
              ctx = SSLContext.getInstance("TLS");
              kmf = KeyManagerFactory.getInstance("SunX509");
              ks = KeyStore.getInstance("JKS");
    //          ks.load(new FileInputStream("testkeys"), passphrase);
              ks.load(new FileInputStream("serverkey"), passphrase);
              kmf.init(ks, passphrase);
              ctx.init(kmf.getKeyManagers(), null, null);
              ssf = ctx.getServerSocketFactory();
              return ssf;
         } catch (Exception e) {
              e.printStackTrace();
         } else {
         return ServerSocketFactory.getDefault();
         return null;
    Could anyone help ?
    thanks in advance
    Jayaprakash

    The same thing.
    I have found the place where the exception throws.
    It is com.sun.net.ssl.internal.ssl.AVA class.
    It has a constructor AVA(StringReader)
    There is a check in this constructor of different certificate extensions
    (if-else). If it sees no familiar extension it throws exception and handshake fails.
    It is not difficult to fix this problem: just ignore unknown extension.
    Everything works fine with this "improved" class (under VA 3.5).
    But the problem is - the using of this class in applets.
    How can I say the browser to use my "improved" class and not the one it downloaded with java plug-in?

  • Working code snippet for JSSE 1.0.2

    This code works only with JSSE 1.0.2. JSSE 1.0.1 has a bug I believe which give null cert chain
    error when using client authorization.
    Below is a java code snippet to create a SSL server and client sockets.
    SocketsFactory.java
    This class is an utility class which gets you the Secure Socket for server and the client.
    It reads from the properties file.
    public class SocketsFactory{
    /** Creates a SSL client socket. It uses the properties obtained from the
    * sslPropsFile to create the client socket.
    * @param sslPropsFile The ssl properties file that contains information about the provider etc.
    * @param host The host to connect to.
    * @param port The port on which this socket should attempt to connect
    * @throws IOException if there was any exceptions in creating the sockets or if the properties file
    * was not found or corrupted.
    * @return returns the socket that was created.
         public static Socket createSecureSocket(final String sslPropsFile, String host,int port)throws IOException{
              Properties props = readPropertiesFile(sslPropsFile);
              SSLSocketFactory factory = null;
              System.setProperty("javax.net.ssl.trustStore",(String)props.get("com.ibm.idmg.ssl.keyStore"));
              //Getting a secure client socket using sun..
              try {
                   addProvider(props);
                   // Set up a key manager for client authentication
                   // if asked by the server. Use the implementation's
                   // default TrustStore and secureRandom routines.
                   SSLContext ctx = getSSLContext(props);
                   factory = ctx.getSocketFactory();
              catch (Exception e) {
                   e.printStackTrace();
                   throw new IOException(e.getMessage());
              SSLSocket client =(SSLSocket)factory.createSocket(host, port);
              client.startHandshake();
              return client;
    /** Creates a SSL server socket based on sun's implementation using JSSE. Uses the
    * sslPropsFile to get the keystore used for validating certificates and their
    * passwords.
    * @param sslPropsFile The properties file containing SSL provider, key passwords etc.,
    * @param port The port to which this socket should listen at.
    * @throws IOException If the properties file was not found or it was corrupted or if there was any
    * other errors while socket creation.
    * @return the serversocket object.
         public static ServerSocket createSecureServerSocket(final String sslPropsFile,int port) throws IOException{
              Properties props = readPropertiesFile(sslPropsFile);
              String trustStore = (String)props.get("com.ibm.idmg.ssl.keyStore");
              System.setProperty("javax.net.ssl.trustStore",trustStore);
              //     Getting a sun secure server socket
              SSLServerSocketFactory ssf = null;
              try {
                   addProvider(props);
                   // set up key manager to do server authentication
                   SSLContext ctx = getSSLContext(props);
                   ssf = ctx.getServerSocketFactory();
              } catch (Exception e) {
                   e.printStackTrace();
                   throw new IOException(e.getMessage());
              SSLServerSocket socket = (SSLServerSocket)ssf.createServerSocket(port);
              socket.setNeedClientAuth(true);
              return socket;          
         * Internally used function to read a provider from the properties and
         * add it as the current ssl provider. The properties should have the
         * property <i>com.ibm.idmg.ssl.sslProvider</i> defined. Otherwise
         * throws NullPointerException.
         private static void addProvider(Properties props) throws Exception{
              String provider = (String)props.get("com.ibm.idmg.ssl.sslProvider");
              if (provider == null)
                   throw new NullPointerException("com.ibm.idmg.ssl.sslProvider is not specified!");
              java.security.Security.addProvider((java.security.Provider)Class.forName(provider).newInstance());
         * Internally used function to read a file and return it as java properties.
         * It uses java.util.Properties. Throws FileNotFoundException if the file
         * was not found. Otherwise returns the properties.
         private static Properties readPropertiesFile(final String file) throws IOException{
              if (file == null)
                   throw new IOException("SSL Context File name not specified!");
              FileInputStream in = new FileInputStream(file);
              Properties properties = new Properties();
              properties.load(in);
              in.close();
              in = null;
              return properties;
         * Internal function used to retrieve a SSLContext object. It is used primarily
         * for creating SSL sockets that can authenticate each other based on the
         * keystores specified using the properties.
         private static SSLContext getSSLContext(Properties props) throws Exception{
              SSLContext ctx;
              KeyManagerFactory kmf;
              KeyStore ks;
              String password = (String)props.get("com.ibm.idmg.ssl.keyStorePassword");
              if (password == null)
                   password = System.getProperty("javax.net.ssl.keyStorePassword");
              char[] passphrase = password.toCharArray();
              ctx = SSLContext.getInstance("TLS");
              kmf = KeyManagerFactory.getInstance("SunX509");
              ks = KeyStore.getInstance("JKS");
              String keyStoreFile = (String)props.get("com.ibm.idmg.ssl.keyStore");
              if (keyStoreFile == null)
                   keyStoreFile = System.getProperty("javax.net.ssl.keyStore");
              FileInputStream in = new FileInputStream(keyStoreFile);
              ks.load(in, passphrase);
              in.close();
              in = null;
              //     All keys in the KeyStore must be protected by the same password.
              String keyPassword = (String)props.get("com.ibm.idmg.ssl.keyPassword");
              if (keyPassword != null)
                   passphrase = keyPassword.toCharArray();
              kmf.init(ks, passphrase);
              ctx.init(kmf.getKeyManagers(), null, null);
              return ctx;
    The Server properties file looks like this.
    #     Specify the SSL provider here.
    #     Using sun's reference implementation for testing..
    com.ibm.idmg.ssl.sslProvider=com.sun.net.ssl.internal.ssl.Provider
    #     Specify the keystore file that this ssl socket should use
    com.ibm.idmg.ssl.keyStore=server.ks
    #     Specify the password for this keystore file
    com.ibm.idmg.ssl.keyStorePassword=servercanpass
    #     Specify the password used to protect the keys in the keystore
    #     Note: all the keys should have the same password
    com.ibm.idmg.ssl.keyPassword=icanpass
    The client properties file
    #     Specify the SSL provider here.
    #     Using sun's reference implementation for testing..
    com.ibm.idmg.ssl.sslProvider=com.sun.net.ssl.internal.ssl.Provider
    #     Specify the keystore file that this ssl socket should use
    com.ibm.idmg.ssl.keyStore=client.ks
    #     Specify the password for this keystore file
    com.ibm.idmg.ssl.keyStorePassword=clientshouldpass
    #     Specify the password used to protect the keys in the keystore
    #     Note: all the keys should have the same password
    com.ibm.idmg.ssl.keyPassword=canipass
    Now to create the certificates..
    Its a 5 step process
    1) Create the keystore file.
         keytool -genkey -alias mohan -dname "CN=Mohan Tera OU=IS O=IM L=sanjose S=NY C=US" -keystore server.ks -storepass servercanpass -validity 180 -keypass icanpass
    2) Create a self signed certificate. If you need to get it signed from
         verisign then you have to create a certificate request. For testing purposes,
         you can create a self signed certificate.
         keytool -selfcert -alias mohan -dname "CN=Mohan Tera OU=IS O=IM L=sanjose S=NY C=US" -keystore server.ks -storepass servercanpass -validity 180 -keypass icanpass
    3) Export the public key from the keystore to a certificate file that is to be imported to the client keystore.
         keytool -export -alias mohan -file fromserver.cer -keystore server.ks -storepass servercanpass
    4) Repeat the above steps for the client also..
         a)
         keytool -genkey -alias moks -dname "CN=Jennifer Poda OU=Javasoft O=Sun L=Edison S=NJ C=US" -keystore client.ks -storepass clientshouldpass -validity 180 -keypass canipass
         b)
         keytool -selfcert -alias moks -dname "CN=Jennifer Poda OU=Javasoft O=Sun L=Edison S=NJ C=US" -keystore client.ks -storepass clientshouldpass -validity 180 -keypass canipass
         c)
         keytool -export -alias moks -file fromclient.cer -keystore client.ks -storepass clientshouldpass
    5) Import the certificates that were exported in steps 3 and 4c in client and server keystore respectively.
         keytool -import -trustcacerts -alias new -file fromserver.cer -keypass keypass -storepass clientshouldpass -keystore client.ks
         keytool -import -trustcacerts -alias new -file fromclient.cer -keypass keypass -storepass servercanpass -keystore server.ks
    And voila you are all set to go..
    Hope this explains to all the people who are struggling with JSSE..
    Regards,
    Moks

    when i using your method in my code i get the following exception
    pl. help me.
    java.security.UnrecoverableKeyException: Cannot recover key
    at sun.security.provider.KeyProtector.recover(KeyProtector.java:301)
    at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:103
    at java.security.KeyStore.getKey(KeyStore.java:289)
    at com.sun.net.ssl.internal.ssl.X509KeyManagerImpl.<init>(DashoA6275)
    at com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl.engineInit(DashoA6
    275)
    at javax.net.ssl.KeyManagerFactory.init(DashoA6275)
    at ClassFileServer.getServerSocketFactory(ClassFileServer.java:145)
    at ClassFileServer.main(ClassFileServer.java:115)
    Exception in thread "main" java.lang.NullPointerException
    at ClassFileServer.main(ClassFileServer.java:117)

  • How do I link the javadoc for one jar to another?

    I'm starting to work on the javadocs for my project. It consists of three JAR files. The problem is I haven't figured out is how to link the javadoc for one JAR to that for another jar. So if JAR A declares class X and JAR B has class Y extend class X, they need to be linked. But the javadoc output only has plain text there. What am I doing wrong? Something like @see com.u3e.tests.tools.X is output as text, not a link. I have the same problem for any @see pointing to part of the JDK. @see java.lang.Object is text.
    My project is NetBeans IDE based.  Do I need to manually specify something on the command line?  I see the -sourcepath and -classpath command line options, but don't know if those would help or not.  Ideally, there would be a place directly in the Documentation portion of the properties for each JAR to list that, but I don't see it.  The various JARs are listed under the libraries section as needed to satisfy dependencies.

    The best way IMO is to sync each iPad with your computer. Having all your stuff backed up on a computer is a good idea anyway. Just read how many folks here are trying to recover lost stuff that could easily be copied back from either backup or iTunes on the computer.
    Sync both iPads to the computer. Transfer all photos to the same computer. Then sync again selecting which items you want on each iPad.

  • Can anyone share with me how you  write Javadoc?

    Can anyone share with me how their companies write Javadoc?
    Are your developers solely responsible for it? Do your technical writers own it or review it? How do you make sure it's good?
    Right now, my software developers are mostly responsible for writing all the API info and it's of poor quality and really lacking details. I don't mean spelling/grammar-type problems. My developers just don't seem to "get" what information to include, no matter how many guidelines or checklists I give them.
    A very simple example is:
    * Gets the status
    public java.lang.Integer getStatus() {...}With no indication of what status values may be returned and what the values might mean.
    How do you ensure that what you write is actually useful? Please help!
    I'm aware of the method Sun recommends, but I want to know what others do.
    Thank you

    Hi,
    Well, concerning the question what a good API documentation should be. Just imagine, you are a programmer and you want to use that API. You need to know how it works. There can be only three ways to find it:
    (1) The API documentation
    (2) Probing experiments. Even a good documentation may not describe everything. Sometimes, the only way to understand certain things you particularly need may be guessing something, writing a code basing on it and see how it works. Then, guessing something again, more precisely now, and so on. Even a very good documented API (for instance, javax.swing) may require that sort of approach to be able to use it eventually.
    (3) At last, when source codes are available, one may look at them and try to understand precisely, what a particular method actually does.
    I think the better the API documentation the less one may need to endeavor those two last steps. There is actually a limit about it. Without any proper explanation at all, one may never be able to use a particular API, neither after probing it nor after looking at source codes (that is not to say the sources may be simple unavailable at all).
    Concerning how to write the API documentation, that's mostly the question of managing your team. I think, basically, the original source of the ultimate information about everything implemented in the projects are those very programmers (developers) and, probably, some software architects. But those guys normally are not especially eager to write any documentation (especially developers). That your example just demonstrates it. It seems, your programmers just wrote that "Gets the status" for you to make them leave in rest after that. In addition, the programmers normally have such a sort of work and activity that does not match particularly well with the writing literature and doing their main job simultaneously. You should not enforce them to do that!
    To write a good documentation, you will need to engage a technical writer. That's normally a guy with some programming background. However, writing some literature is actually what he does the best. (Sometimes, such people do something else about written word beyond the technical writing.) The job of that guy would be to write the documentation. This will take from him (or her) two basic things:
    (1) The ability to understand the whole software system (that's where his programming background will be needed!);
    (2) To communicate with the programmers who have developed the stuff and to obtain from them all the necessary information they know. That may require some personal (verbal) communication with them, because asking them to write everything again will only result in the same "Gets the status" explanations. However, to be successful in this, the technical writer needs to have some explicit management approval behind him. Otherwise, some of the guys will avoid speaking to him at all (saying they lack the time). So, the management should assign them the necessary priority for such communications.
    Particularly big projects may even need to have the whole team of technical writers.
    Anyway, writing docs is a hard work. But it is extremely important! The good documentation may both increase your sales and eliminate lots of expense on further support of your customers.
    Regards,
    Leonid Rudy
    http://www.docflex.com

  • How to Modify Override Handler class in jsse.jar

    Hi,
    Is there a way to change port number in Handler class in jsse.jar and recompile the Java file, or override the class?
    The Handler class seems to be using port number 443, whereas the the Webserver of PS Application is using a different port number (7004).
    Any ideas.
    Thanks
    Jay

    You're over-thinking this. The Handler class uses whatever port it is told to use by the person that constructs it. 443 is just the default.
    All you have to do is put the required port number into the https URL, e.g. https://www.myhost.com:7004.

Maybe you are looking for