English

Error: java.io.IOException: Emitter failure. Invalid endpoint address in port IAuthentication

Error Message

If you use the WSDL2Java command with the Axis Web service toolkit to point to a WSDL file of an https server, you receive the following error:

Code:
java.io.IOException: Emitter failure. Invalid endpoint address in port IAuthentication

Cause

You are using a version of the Java Developer Kit (JDK) that was released prior to JDK 1.4.

Solution or Workaround

  1. Open the master security properties file found at
    %JAVA_HOME%\jre\lib\security\java.security

  2. Add this line of code to the java.security file:

    Code:
    security.provider.N=com.sun.net.ssl.internal.www.protocol

    where 'N' is an integer larger than the numbers already in this file.
  3. Download and install JSSE from the Sun Web site.
    This download contains the following three files: jnet.jar, jsse.jar, and jcert.jar.
  4. Add these three files to your CLASSPATH.
  5. Run the following command at a command prompt to generate https stubs:

    Code:
    Java -D java.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol org.apache.axis.wsdl.WSDL2Java Authentication.wsdl -p esri.arcwebservices

  6. If you want to execute a JSP application, copy jnet.jar, jsse.jar and jcert.jar to %JAVA_HOME%\jre\lib\ext directory.

    Note: Before binding the URL of the WSDL in the JSP code, these lines should be included:

    Code:
    System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
    Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

    These two lines of code (in Step 6) will allow the Web server to support HTTPS. Execute this method only once; it will remain in use in the application until the Web server is restarted.

Related Information