通过使用 Web 服务属性编辑器的“WSDL 定制”面板,可以定制通过 WSDL 创建的 JAX-WS (Java EE 5) Web 服务和客户端。在这些情况下,将调用 wsimport 来生成 JAX-WS 工件。缺省情况下,wsimport 遵循 JAX-WS 规范指定的绑定规则。在生成这些工件时,可使用“WSDL 定制”面板来定制 wsimport 行为。
您可以从“项目”窗口中访问 Web 服务属性编辑器的“WSDL 定制”面板。右键单击表示“基于 WSDL”工件的节点,然后选择“编辑 Web 服务属性”。例如,对于 Web 服务客户端,展开“Web 服务参考”节点,右键单击表示 Web 服务客户端的节点,然后选择“编辑 Web 服务属性”。将显示该编辑器。选择“WSDL 定制”标签,将打开该面板。
使用“WSDL 定制”面板的“全局定制”部分,可以定制整个 WSDL 文件。也就是说,如果未在较低级别元素中覆盖“全局定制”部分中指定的任何定制,则 WSDL 文件中所有受影响的元素都将遵循这些定制。例如,如果启用了“全局定制”部分的“启用异步客户端”,而没有对任何“端口类型”或“端口类型操作”进行定制,则将以异步方式生成 WSDL 文件中的所有操作。但是,可以覆盖较高级别的定制。
继续我们的示例,假设有 A 和 B 两个端口类型,如果您在端口类型 B 中禁用了异步操作,则 A 中的所有操作都将为异步操作,而 B 中的操作不会为异步操作。然后可以在操作级别覆盖定制。因此,覆盖机制遵循以下的分层结构:全局定制 > PortTypes > PortType。
可以定义以下全局属性:
SetLastTradePriceResponse setLastTradePrice(SetLastTradePrice setLastTradePrice);
但是,如果具有包装样式,wsimport 将生成以下 Java 代码:
void setLastTradePrice(String tickerSymbol, float lastTradePrice);
可以看到,如果使用包装样式,方法参数将分解为其组成部分。因此,指定包装样式或非包装样式取决于开发者的编码风格。