So things have only gotten worse in regards to things going haywire with CXF and the webservice I'm trying to communicate with. I'm able to send a soap request directly to the webservice without an SSL problems, but I always get a handshake error no matter what I try with CXF. Here is my current cxf.xmlfile:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:http="http://cxf.apache.org/transports/http/configuration" xsi:schemaLocation="http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <http:conduit name="{ http://testnotification/notification}NotificationPort.http-conduit"> <http:tlsClientParameters secureSocketProtocol="SSL"> <sec:trustManagers> <sec:keyStore type="JKS" password="changeit" file="c:\jdk1.5.0_12\jre\lib\security\cacerts"/> </sec:trustManagers> <sec:keyManagers keyPassword=""> <sec:keyStore type="JKS" password="changeit" file="c:\jdk1.5.0_12\jre\lib\security\cacerts"/> </sec:keyManagers> </http:tlsClientParameters> </http:conduit> </beans> this is the same store that my manual connection to the webservice is using, yet with cxf I get: Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java :150) at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java :117) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert( SSLSocketImpl.java:1584) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord( SSLSocketImpl.java:866) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake( SSLSocketImpl.java:1030) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake( SSLSocketImpl.java:1057) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake( SSLSocketImpl.java:1041) at sun.net.www.protocol.https.HttpsClient.afterConnect( HttpsClient.java:402) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect( AbstractDelegateHttpsURLConnection.java: 166) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream( HttpURLConnection.java:857) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream (HttpsURLConnectionImpl.java:230) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching (HTTPConduit.java:1787) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite( HTTPConduit.java:1755) at org.apache.cxf.io.AbstractWrappedOutputStream.write( AbstractWrappedOutputStream.java:42) at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:96) at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java :214) at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311) Any ideas? I'm about at the end of my rope... I cannot for the life of me get this to work. I did try to send a request without SSL just so I could see what it's sending, if I simply comment out the SSL config in my cxf.xml, then CXF will start complaining that it can't serialize my jaxb objects because of a missing XMLRoot which makes no sense because with SSL turned on, it magically has no problem serializing my JAXB objects. Also, with SSL off, all I get in TCPMon is just some headers sent to the webservice with no soap in the body. Does anyone know why this is so screwy? I'm using 2.0.1: Caused by: javax.xml.bind.MarshalException - with linked exception: [com.sun.istack.SAXException2: unable to marshal type " testnotification.NotificationInfo" as an element b ecause it is missing an @XmlRootElement annotation] at com.sun.xml.bind.v2.runtime.MarshallerImpl.write( MarshallerImpl.java:295) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal( MarshallerImpl.java:221) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal( AbstractMarshallerImpl.java:70) at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject( JAXBEncoderDecoder.java:187) at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall( JAXBEncoderDecoder.java:156) ... 54 more Caused by: com.sun.istack.SAXException2: unable to marshal type " testnotification.NotificationInfo" as an element because it is missing an @XmlRootElement annotation at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError( XMLSerializer.java:225) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot( ClassBeanInfoImpl.java:267) at com.sun.xml.bind.v2.runtime.property.SingleReferenceNodeProperty.serializeBody (SingleReferenceNodeProperty.jav a:74) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody( ClassBeanInfoImpl.java:286) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType( XMLSerializer.java:619) at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody (SingleElementNodeProperty.java:11 3) at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody( ClassBeanInfoImpl.java:286) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType( XMLSerializer.java:619) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody( ElementBeanInfoImpl.java:93) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody( ElementBeanInfoImpl.java:127) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody( ElementBeanInfoImpl.java:244) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot( ElementBeanInfoImpl.java:251) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot( ElementBeanInfoImpl.java:33) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot( XMLSerializer.java:461) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write( MarshallerImpl.java:292)
