Labels

.net (1) *nix (1) administration (1) Android (2) Axis2 (2) best practice (5) big-data (1) business-analysis (1) code re-use (1) continuous-integration (1) Cordova-PhoneGap (1) database (2) defect (1) design (3) Eclipse (7) education (1) groovy (2) https (2) Hudson (4) Java (1) JAX-RS (2) Jersey (3) Jetty (1) localization (1) m2eclipse (2) MapForce (1) Maven (12) MySQL (1) Nexus (4) notes (4) OO (1) Oracle (4) performance (1) Perl (1) PL/SQL (1) podcast (1) PostgreSQL (1) requirement (1) scripting (1) serialization (1) shell (1) SoapUI (1) SQL (1) SSH (2) stored procedure (1) STS (2) Subclipse (1) Subversion (3) TOAD (3) Tomcat (4) UML (2) unit-testing (2) WAMP (1) WAS (3) Windows (3) WP8 (2) WTP (2) XML (4) XSLT (1)

Friday, December 17, 2010

Configuring Axis2 to expose web services over https

  1. First configure Tomcat to handle https.  This link is useful for this but note for development purposes,when the keytool prompts for “Common Name (CN)”, enter “localhost”
  2. Without further configuration, if you attempt to access your web service over https, you will likely get an error about "https is forbidden" thrown from the AxisServlet class
  3. Next, configure Axis2 to accept https calls.  Edit the axis2.xml configuration file.  There should already be a section that looks like:
        <transportReceiver name="http"
                           class="org.apache.axis2.transport.http.SimpleHTTPServer">
        <parameter name="port">8080</parameter>
    
    Add another section like this:
        <transportReceiver name="https"
                           class="org.apache.axis2.transport.http.SimpleHTTPServer">
            <parameter name="port">8443</parameter>
        </transportReceiver>
    
    (Port may vary depending on your Tomcat configuration)
  4. Without further configuration, if you try again, you will probably get an error about java.lang.NoClassDefFoundError: org/apache/http/HttpResponseFactory.  This interface can be found in the httpcore library.  If using Maven, include the following in your POM file:
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.0</version>
                <scope>runtime</scope>
            </dependency>
    
  5. Now it should be working as it did over regular http

No comments:

Post a Comment