Ant build Weblogic WebService 为了生成WSDL文件时-出现错误并中断

shuwei1869 2012-12-14 04:08:58
我在用Ant build Weblogic WebService 为了生成WSDL文件时,出现错误并中断。

我的环境:
Ant version: Apache Ant version 1.7.0
Java version: JDK1.6_U16 <Only>
Based-Weblogic jar: 8.1 sp2
---|..\weblogic\weblogic.jar
---|..\weblogic\webservice.jar
---|..\weblogic\webserviceclient.jar
---|..\weblogic\*.jar
App Server Platform: Weblogic server 11gR1(内核10.3.6) <我认为和这个因素没有关系>

JAX-RPC 规范的 webservice,

错误信息:
[clientgen] Generating client jar for XXXXXXXX-WebLogic.ear(XXXXXHandlingService) ...
[clientgen] weblogic.webservice.server.ConfigException: unable to load class:[[I] java.lang.ClassNotFoundException: [I
[clientgen] at weblogic.webservice.server.WebServiceFactory.loadClass(WebServiceFactory.java:1280)
[clientgen] at weblogic.webservice.server.WebServiceFactory.addParamsToMethod(WebServiceFactory.java:1028)
[clientgen] at weblogic.webservice.server.WebServiceFactory.registerOperation(WebServiceFactory.java:863)
[clientgen] at weblogic.webservice.server.WebServiceFactory.initOperations(WebServiceFactory.java:623)
[clientgen] at weblogic.webservice.server.WebServiceFactory.createFromMBean(WebServiceFactory.java:215)
[clientgen] at weblogic.webservice.tools.build.internal.WSDLGenImpl.getWebServiceRuntime(WSDLGenImpl.java:240)
[clientgen] at weblogic.webservice.tools.build.internal.WSDLGenImpl.run(WSDLGenImpl.java:135)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.doClientGenFromEAR(ClientGenImpl.java:438)
[clientgen] at weblogic.webservice.tools.build.internal.ClientGenImpl.run(ClientGenImpl.java:345)
[clientgen] at weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask.doClientGen(ClientGenTask.java:351)
[clientgen] at weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask.execute(ClientGenTask.java:208)
[clientgen] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[clientgen] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[clientgen] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[clientgen] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[clientgen] at java.lang.reflect.Method.invoke(Method.java:597)
[clientgen] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[clientgen] at org.apache.tools.ant.Task.perform(Task.java:348)
[clientgen] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
[clientgen] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[clientgen] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[clientgen] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[clientgen] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[clientgen] at java.lang.reflect.Method.invoke(Method.java:597)
[clientgen] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[clientgen] at org.apache.tools.ant.Task.perform(Task.java:348)
[clientgen] at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:391)
[clientgen] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[clientgen] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[clientgen] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[clientgen] at java.lang.reflect.Method.invoke(Method.java:597)
[clientgen] at net.sf.antcontrib.logic.For$Reflector.call(Unknown Source)
[clientgen] at net.sf.antcontrib.logic.For.doSequentialIteration(Unknown Source)
[clientgen] at net.sf.antcontrib.logic.For.doTheTasks(Unknown Source)
[clientgen] at net.sf.antcontrib.logic.For.execute(Unknown Source)
[clientgen] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[clientgen] at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
[clientgen] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[clientgen] at java.lang.reflect.Method.invoke(Method.java:597)
[clientgen] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[clientgen] at org.apache.tools.ant.Task.perform(Task.java:348)
[clientgen] at org.apache.tools.ant.Target.execute(Target.java:357)
[clientgen] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[clientgen] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
[clientgen] at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
[clientgen] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[clientgen] at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
[clientgen] at org.apache.tools.ant.Main.runBuild(Main.java:698)
[clientgen] at org.apache.tools.ant.Main.startAnt(Main.java:199)
[clientgen] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[clientgen] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)

BUILD FAILED
..\XXXXXXXXX\XXXXX\AAAAAA\build.xml:402: The following error occurred while executing this line:
..\XXXXXXXXX\\XXXXX\BBBBBBBB\CCCCCCC\build.xml:409:
weblogic.webservice.tools.build.WSBuildException: unable to load class:[[I] java.lang.ClassNotFoundException: [I
- with nested exception:
[weblogic.webservice.server.ConfigException: unable to load class:[[I] java.lang.ClassNotFoundException: [I]

Ant script snapshot:
<taskdef name="clientgen" classname="weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask">
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="${lib.home.po}/weblogic">
<include name="**/*.jar"/>
</fileset>
</classpath>
</taskdef>
...
...
...
<clientgen usePortNameAsMethodName="true" overwrite="true" keepGenerated="true"
useServerTypes="true" clientJar="${src}" ear="${DDDD.home}/dist/XXXXXXXX-WebLogic.ear"
warName="XXXXXXXXXXX.war" saveWSDL="false" serviceName="@{x}Service"
packageName="com.aaa.bbb.ccc.services">
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="${lib.home.po}/weblogic">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${DependentProjA.home}\dist" includes="*.jar"/>
<fileset dir="${DependentProjB.home}\dist" includes="*.jar"/>
<fileset dir="${DependentProjC.home}\dist" includes="*.jar"/>
<fileset dir="${DependentProjD.home}\dist" includes="*.jar"/>
<fileset dir="${DependentProjE.home}\dist" includes="*.jar"/>
</classpath>
</clientgen>
发现只有当某个接口或类,它们的方法,方法的参数列表或返回值中包含java原始数据类型数组(int[],long[],byte[]),则build失败. 若不是,或是对象类型数组就是OK的。

SOAP协议规范,理论是支持简单或复杂数据类型参数的,我想知道这是weblogic版本实现的issue,还是其他什么原因。现在也不能使用这种方式去修改代码:int[]--->Integer[],其它也一样不能用。

各位帮帮忙吧!分不多,不好意思啊。
...全文
174 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧