Hi Ryan ,
It is wired because there is only one difference in the the transport
layer between the http and https.
So I am wonder whether you create two different projects (one for http ,
the other for https) or not.
Maybe there are some difference between your two projects setting.
Willem.
Ryan Moquin wrote:
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)