Dynamic Client 调用WSDL问题

913 views
Skip to first unread message

忆风

unread,
Nov 2, 2009, 9:49:46 PM11/2/09
to cxf-zh
我在一个main中运行如下代码:
URL wsdlURL = new URL("http://localhost:8080/service/
TollFreeNumberService?wsdl");
DynamicClientFactory dcf = DynamicClientFactory.newInstance
();
Client client = dcf.createClient(wsdlURL);

Object[] objArray = new Object[1];
objArray[0] = "";
objArray[1] = "";
objArray[2] = "4001202990";

//调用特定的Web Service方法
Object[] results = client.invoke("getNumber", objArray);
System.out.println(results[0]);

如下错误:
2009-11-03 10:41:10,187
[org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Refreshing
org.apache.cxf.bus.spring.BusApplicationContext@f62373: display name
[org.apache.cxf.bus.spring.BusApplicationContext@f62373]; startup date
[Tue Nov 03 10:41:10 CST 2009]; root of context hierarchy
2009-11-3 10:41:10 org.apache.cxf.bus.spring.BusApplicationContext
getConfigResources
信息: No cxf.xml configuration file detected, relying on defaults.
2009-11-03 10:41:10,484
[org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Bean factory
for application context
[org.apache.cxf.bus.spring.BusApplicationContext@f62373]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@1e152c5
Exception in thread "main" java.lang.IllegalStateException: Unable to
create schema compiler
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient
(DynamicClientFactory.java:264)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient
(DynamicClientFactory.java:231)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient
(DynamicClientFactory.java:224)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient
(DynamicClientFactory.java:159)
at com.m800.i400.pboss.nummanage.ws.impl.Test.main(Test.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:
90)
Caused by: javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.tools.internal.xjc.api.XJC]
at org.apache.cxf.jaxb.JAXBUtils.createSchemaCompiler(JAXBUtils.java:
622)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient
(DynamicClientFactory.java:262)
... 9 more
Caused by: java.lang.ClassNotFoundException:
com.sun.tools.internal.xjc.api.XJC
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.cxf.jaxb.JAXBUtils.createSchemaCompiler(JAXBUtils.java:
615)
... 10 more

cxf不能Dynamic Client方式调用吗?

周大庆

unread,
Nov 2, 2009, 10:19:21 PM11/2/09
to cxf-zh
发现少了个包“jaxb-xjc-2.0.jar”,但却依然不行

2009-11-03 11:15:38,968 [org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Refreshing org.apache.cxf.bus.spring.BusApplicationContext@e53108: display name [org.apache.cxf.bus.spring.BusApplicationContext@e53108]; startup date [Tue Nov 03 11:15:38 CST 2009]; root of context hierarchy
2009-11-3 11:15:39 org.apache.cxf.bus.spring.BusApplicationContext getConfigResources
信息: No cxf.xml configuration file detected, relying on defaults.
2009-11-03 11:15:39,281 [org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Bean factory for application context [org.apache.cxf.bus.spring.BusApplicationContext@e53108]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1e8a1f6
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at $Proxy32.getOptions(Unknown Source)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.addSchemas(DynamicClientFactory.java:447)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:278)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:231)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:224)
at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:159)
at com.m800.i400.pboss.nummanage.ws.impl.Test.main(Test.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: java.lang.NoSuchMethodException: com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.getOptions()
at java.lang.Class.getMethod(Class.java:1605)
at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:50)
... 12 more







2009/11/3 忆风 <zhd...@gmail.com>



--
庄周梦蝶,孰蝶是我,我是孰蝶?一梦至今,蝶我已难分

willem

unread,
Nov 2, 2009, 10:43:51 PM11/2/09
to cxf-zh
你的xjc 的版本太低了, 不知道你用的CXF 是什么版本,
如果是2.1.x , 2.2.x , 哪 jaxb得使用2.1 以上的版本。



On 11月3日, 上午11时19分, 周大庆 <zhd...@gmail.com> wrote:
> 发现少了个包"jaxb-xjc-2.0.jar",但却依然不行
>
> 2009-11-03 11:15:38,968
> [org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Refreshing
> org.apache.cxf.bus.spring.BusApplicationContext@e53108: display name
> [org.apache.cxf.bus.spring.BusApplicationContext@e53108]; startup date [Tue
> Nov 03 11:15:38 CST 2009]; root of context hierarchy
> 2009-11-3 11:15:39 org.apache.cxf.bus.spring.BusApplicationContext
> getConfigResources
> 信息: No cxf.xml configuration file detected, relying on defaults.
> 2009-11-03 11:15:39,281
> [org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Bean factory for
> application context [org.apache.cxf.bus.spring.BusApplicationContext@e53108]:
> org.springframework.beans.factory.support.DefaultListableBeanFactory@1e8a1f 6
> Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
> at $Proxy32.getOptions(Unknown Source)
> at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.addSchemas(DynamicClie ntFactory.java:447)
> at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicCl ientFactory.java:278)
> at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicCl ientFactory.java:231)
> at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicCl ientFactory.java:224)
> at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicCl ientFactory.java:159)
> at com.m800.i400.pboss.nummanage.ws.impl.Test.main(Test.java:83)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3 9)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp l.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
> Caused by: java.lang.NoSuchMethodException:
> com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.getOptions()
> at java.lang.Class.getMethod(Class.java:1605)
> at
> org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInv okationHandler.java:50)

Bryan X

unread,
Nov 3, 2009, 5:07:25 AM11/3/09
to cxf...@googlegroups.com
Caused by: java.lang.ClassNotFoundException:
com.sun.tools.internal.xjc.api.XJC

XJC类包的问题,



2009/11/3 willem <willem...@gmail.com>



--
-»(¯`v´¯)-»

忆风

unread,
Nov 3, 2009, 9:05:42 PM11/3/09
to cxf-zh
Hi,bryan.xu2

是的,的确是XJC包的版本问题,我更新到jaxb-xjc-2.1.12.jar了,
发现DynamicClientFactory,Client都能创建成功,信息如下:

2009-11-04 09:55:06,640
[org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Refreshing
org.apache.cxf.bus.spring.BusApplicationContext@14b7453: display name
[org.apache.cxf.bus.spring.BusApplicationContext@14b7453]; startup
date [Wed Nov 04 09:55:06 CST 2009]; root of context hierarchy
2009-11-4 9:55:06 org.apache.cxf.bus.spring.BusApplicationContext
getConfigResources
信息: No cxf.xml configuration file detected, relying on defaults.
2009-11-04 09:55:07,390
[org.apache.cxf.bus.spring.BusApplicationContext]-[INFO] Bean factory
for application context
[org.apache.cxf.bus.spring.BusApplicationContext@14b7453]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@37fb1e
2009-11-4 9:55:11 org.apache.cxf.endpoint.dynamic.DynamicClientFactory
outputDebug
信息: Created classes: com.m800.i400.pboss.nummanage.ws.ActivateNumber,
com.m800.i400.pboss.nummanage.ws.ActivateNumberResponse,
com.m800.i400.pboss.nummanage.ws.GetNumber,
com.m800.i400.pboss.nummanage.ws.GetNumberDetails,
com.m800.i400.pboss.nummanage.ws.GetNumberDetailsResponse,
com.m800.i400.pboss.nummanage.ws.GetNumberResponse,
com.m800.i400.pboss.nummanage.ws.LockNumberTemp,
com.m800.i400.pboss.nummanage.ws.LockNumberTempResponse,
com.m800.i400.pboss.nummanage.ws.LongLockNumber,
com.m800.i400.pboss.nummanage.ws.LongLockNumberResponse,
com.m800.i400.pboss.nummanage.ws.ObjectFactory

======================================================================================================

这里观察到:ActivateNumber、GetNumber、LockNumberTemp、LongLockNumber、
GetNumberDetails由代理都创建成功了

但是一直在invoke调用不通过,不得其解:
Object[] results = client.invoke("getNumber", objArray);

不晓得哪位兄弟用过这种方式调用ws,指点下问题,多谢了



On 11月3日, 下午6时07分, Bryan X <bryan.xu2...@gmail.com> wrote:
> Caused by: java.lang.ClassNotFoundException:
> com.sun.tools.internal.xjc.api.XJC
>
> XJC类包的问题,
>
> 2009/11/3 willem <willem.ji...@gmail.com>

Bryan X

unread,
Nov 4, 2009, 8:42:37 AM11/4/09
to cxf...@googlegroups.com
问题应该在 objArray 这个参数上,你仔细看看参考, http://cwiki.apache.org/CXF20DOC/dynamic-clients.html

你的 objArray 到底是什么类型,是否需要先实例化?
Reply all
Reply to author
Forward
0 new messages