【问题标题】:Generate webservice stub from wsdl in Java在 Java 中从 wsdl 生成 web 服务存根
【发布时间】:2011-03-09 07:59:14
【问题描述】:
我正在开发带有向导的 Eclipse 插件。当鼠标右键单击 Java 编辑器时,该向导将在上下文菜单中以示例形式提供。
向导将负责收集以下信息:
向导完成后,我希望将 WSDL 中描述的 Web 服务的存根生成到前面提供的包中。
问题是:如何从源代码(而不是命令行)动态生成 webservice 存根并将其添加到当前项目中?
到目前为止,我遇到了 WSDL2Java (Axis)、Apache CXF 和 wsimport。我尝试使用 Apache CXF 和 wsimport,但我总是得到 ClassNotFoundException,即使所有 jar 都包含在 buildpath 中。我想我可能用错了。
请帮助我的人!该任务的时间不多了:-(
小例子:
假设代码是(Apache CXF):
String[] args = {"-client", "-d", "D:\\test", "D:\test.wsdl" };
WSDLToJava w = 新的 WSDLToJava(args);
ToolContext t = new ToolContext();
w.run(t);
异常的前几行是:
java.lang.NoClassDefFoundError: org/apache/cxf/tools/wsdlto/WSDLToJava
在 plugin.wsreplication.ui.wizard.component.AddComponentWizard.performFinish(AddComponentWizard.java:160)
在 org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:752)
在 plugin.wsreplication.ui.wizard.component.AddComponentWizardDialog.finishPressed(AddComponentWizardDialog.java:39)
在 org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373)
在 org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
在 org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
在 org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
在 org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910)
在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)
在 org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
在 org.eclipse.jface.window.Window.open(Window.java:801)
在 plugin.wsreplication.ui.action.AddComponentAction.run(AddComponentAction.java:35)
在 org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
【问题讨论】:
-
“即使所有 jar 都包含在 buildpath 中,我也总是遇到 ClassNotFoundException。我想我可能没有正确使用它们。”您可以发布确切的例外情况、您使用它们所采取的步骤等吗?
-
我记得,wsimport 需要安装 Java SDK,而不仅仅是 JRE。
-
当你运行它时,buildpath 是否暗示它们在类路径上?构建后运行程序时仍需要指定类路径。
-
详述:根据我描述的上下文应该怎么做?请详细说明,哪些文件应该包含在构建路径中才能正确?
标签:
java
eclipse-plugin
web-services
dynamic
stub