Java 使用ApacheCXF生成类是如何工作的?
因此,我使用ApacheCXF从WSDL创建了一个客户端存根应用程序。这一过程相对简单。我是在SoapUI界面中完成的。我提供了WSDL位置,告诉CXF生成客户机存根并点击OK 然后,我将项目导入Eclipse,添加ApacheCXF库,配置一些安全选项、证书等等Java 使用ApacheCXF生成类是如何工作的?,java,cxf,Java,Cxf,因此,我使用ApacheCXF从WSDL创建了一个客户端存根应用程序。这一过程相对简单。我是在SoapUI界面中完成的。我提供了WSDL位置,告诉CXF生成客户机存根并点击OK 然后,我将项目导入Eclipse,添加ApacheCXF库,配置一些安全选项、证书等等 我写了一个main,对我的web服务进行了一些测试调用,然后成功了。 现在我的问题是,我不知道为什么它会起作用。更具体地说,当我在Eclipse中运行时,调试输出清楚地显示有CXF类被调用 信息:已加载配置文件cxf.xml。 和 o
我写了一个main,对我的web服务进行了一些测试调用,然后成功了。 现在我的问题是,我不知道为什么它会起作用。更具体地说,当我在Eclipse中运行时,调试输出清楚地显示有CXF类被调用
信息:已加载配置文件cxf.xml。
和
org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
在我的main()
中,我正在调用
MyServices ss = new MyServices(wsdlURL, SERVICE_NAME);
port = ss.getWSHttpBindingMyService();
但是MyServices
类扩展了javax.xml.ws.Service
,并且没有任何提示CXF的内容
wsdl2java还生成了一个MyService
接口和一个MyServiceImpl
类,该类位于同一个包中。看起来是个不错的候选人。在我的main()
中,我可以编写类似于port.someMethod(someRequest)
的东西。如果我按ctrl键单击someMethod
并遵循实现,它实际上会将我带到MyServiceImpl
类,但那里只有伪代码
public Boolean someMethod(SomeRequest request) {
LOG.info("Executing operation");
System.out.println(request);
try {
Boolean _return = null;
return _return;
} catch (java.lang.Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
因此,一定有一些配置告诉运行时要使用哪个实现。但我不知道它在哪里,也不知道是哪一个
感谢您使用cxf还是wsdl2java来生成客户端代码。 客户端代码将根据J2EE规范生成 生成的代码只是服务的声明,服务的实现将在服务器上进行 客户机代码利用webservice wsdl位置查找服务及其公开的操作 签入您的MyServices,您将看到您的服务URL。 前
谢谢您好,我想问的是,它如何将生成的java代码与客户端的CXF实现连接起来。您是否在代码中创建了任何客户端实例。i、 e org.apache.cxf.endpoint.Client Client=org.apache.cxf.frontend.ClientProxy.getClient(端口);是的,我是
Client-Client=ClientProxy.getClient(服务)代码>您正在创建的这个客户机实例来自与cxf相关的jar。您已经在项目中添加了cxf客户机jar依赖项。所以,一旦您尝试运行主程序,它就会尝试读取您的本地cxf.xml配置文件以检查配置。然后执行调用。
wsdlLocation = `"http://127.0.0.1/bookstore/services/search?wsdl"`