Hi,
Just a quick notes, please take a look at WHICH_JARS doc in cxf kit
lib folder.
Freeman
On 2010-12-30, at 上午9:56, John Franey wrote:
How do I get to the minimal list of dependencies my cxf client needs
to run?
I have a client (from
http://www.ibm.com/developerworks/java/library/j-jws17/index.html)
whose
build I have maven-ized. I'm trying to construct the correct runtime
classpath so that maven would build a runnable client. The ant
build from
the article simply puts *everything* from ${cxf-root}/lib onto the
classpath. I would like a classpath that has only what is needed to
run.
When I run the client from the article with only the build time
dependencies
on the classpath, I get a result that does not tell me which
dependencies to
add. Not a class-not-found exception, or a log message (I turned it
up to
'trace' level). The error I get is on the server side log:
Dec 29, 2010 8:16:00 PM
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor
handleMessage
WARNING: Request does not contain required Security header
Dec 29, 2010 8:16:00 PM
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor
handleMessage
WARNING:
org.apache.ws.security.WSSecurityException: An error was discovered
processing the <wsse:Security> header
at
org
.apache
.cxf
.ws
.security
.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:229)
at
org
.apache
.cxf
.ws
.security
.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
at
org
.apache
.cxf
.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
243)
at
org
.apache
.cxf
.transport
.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
at
org
.apache
.cxf
.transport.servlet.ServletDestination.invoke(ServletDestination.java:
98)
at
org
.apache
.cxf
.transport
.servlet.ServletController.invokeDestination(ServletController.java:
423)
at
org
.apache
.cxf
.transport.servlet.ServletController.invoke(ServletController.java:
178)
at
org
.apache
.cxf
.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:
142)
at
org
.apache
.cxf
.transport
.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:
179)
at
org
.apache
.cxf
.transport
.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at
org
.apache
.cxf
.transport
.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at
org
.apache
.catalina
.core
.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
269)
.... (more details available, omitted for now)
And the client receives a fault:
javax.xml.ws.soap.SOAPFaultException: An error was discovered
processing the
<wsse:Security> header
at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
146)
at $Proxy42.matchQuakes(Unknown Source)
at com.sosnoski.ws.seismic.cxf.CxfClient.runQuery(CxfClient.java:83)
at
com.sosnoski.ws.seismic.cxf.TestClient
$TestRunnable.run(TestClient.java:210)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.cxf.binding.soap.SoapFault: An error was
discovered
processing the <wsse:Security> header
... (more details available, omitted for now)
I think the right jar file on the runtime classpath would affect the
content
of the wsse:Security header, but I don't know which jar file.
To discover the minimal list of dependencies, I ran a few experiments:
1) In eclipse, I launched the maven built project with all the jar
files
from ${cxf-root}/lib on the classpath. That works and so one-by-
one, I
removed the jars from the runtime classpath until I was left with
the ones
that work: only cxf-manifest.jar. The content of that jar is only a
manifest and a maven pom. Does cxf read the pom to load the jar
files from
my local repository?
But I also have a two experiments that conflict with that finding. 1)
Putting cxf-distribution-manifest as a dependency in my maven
project pom
does not work. Also, 2) excluding cxf-manifest.jar from the
article's ant
build does not break the client.
So, how do I discover the minimal runtime dependencies required on
this
client's classpath?
cxf 2.2.8, linux ubuntu 10.10, jdk 1.6, tomcat 5.5.
Thanks,
John
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org