- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 jax-ws 的 wsimport 从 WSDL 生成 java 类。我正在使用 jaxb2-basics 插件来创建 toString、equals、hashCode、copy 和 merge 方法。
我希望生成的类能够实现接口(interface),以便在我们需要更改代码时将我们的代码与实现隔离开来。
我想使用 jaxb2 的功能来生成实现指定接口(interface)的类,但收效甚微。类实现接口(interface)是不够的。我希望由其他生成的类组成的生成类在引用这些对象时使用接口(interface)而不是实现。
我正在使用一个外部绑定(bind)文件来定义一个类应该实现的接口(interface):
<jaxws:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
wsdlLocation="ExampleService.wsdl"
xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
jaxb:extensionBindingPrefixes="inheritance">
<!-- Person -->
<jaxws:bindings node="wsdl:definitions/wsdl:types/s:schema[@targetNamespace='http://example.com/ws']">
<jaxb:bindings node="//s:complexType[@name='Person']">
<inheritance:implements>com.example.IPerson</inheritance:implements>
</jaxb:bindings>
</jaxws:bindings>
<!-- Bus -->
<jaxws:bindings node="wsdl:definitions/wsdl:types/s:schema[@targetNamespace='http://example.com/ws']">
<jaxb:bindings node="//s:complexType[@name='Bus']">
<inheritance:implements>com.example.IBus</inheritance:implements>
<jaxb:bindings node="//s:element[@name='Driver']">
<jaxb:class ref="com.example.IPerson"/>
</jaxb:bindings>
<!-- How to do this? This doesn't work.
<jaxb:bindings node="//s:element[@name='Passengers']">
<jaxb:class ref="java.util.List<com.example.IPerson>"/>
</jaxb:bindings>
-->
</jaxb:bindings>
</jaxws:bindings>
例如,如果我有一个名为 Bus 的类,其中有一个名为 Person 的类,我希望 Bus 实现 IBus,Person 实现 IPerson,Bus 有一个 IPerson 类型的成员变量,而不是 Person。
public Class Bus implements IBus {
protected IPerson driver;
...
}
我在绑定(bind)文件中的内容正在运行。
但是,如果 Bus 有一个 Person 对象列表,我无法让 wsimport 为定义 IPerson 对象列表的 Bus 生成一个类。
public Class Bus implements IBus {
protected IPerson driver;
protected List<IPerson> passengers;
...
}
这是我使用的示例 wsdl(愚蠢而愚蠢的示例,但它明白了要点):
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns="http://example.com/ws"
xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="http://example.com/ws"
name="BusServiceDefinitions">
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://example.com/ws">
<xs:element name="BusRequest" type="ns:BusRequest"/>
<xs:element name="BusResponse" type="ns:BusResponse"/>
<xs:complexType name="Bus">
<xs:sequence>
<xs:element name="Driver" type="ns:Person" minOccurs="1" maxOccurs="1"/>
<xs:element name="Passengers" type="ns:Person" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Person">
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BusRequest">
<xs:sequence>
<xs:element name="person" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BusResponse">
<xs:sequence>
<xs:element name="bus" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name="BusRequest">
<part name="BusRequest" type="ns:BusRequest"/>
</message>
<message name="BusResponse">
<part name="Bus" type="ns:Bus"/>
</message>
<portType name="Bus_PortType">
<operation name="createBus">
<input message="ns:BusRequest"/>
<output message="ns:BusResponse"/>
</operation>
</portType>
<binding name="Bus_Binding" type="ns:Bus_PortType">
<s1:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="createBus">
<s1:operation soapAction="createBus"/>
<input>
</input>
<output>
</output>
</operation>
</binding>
<service name="Bus_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="ns:Bus_Binding" name="Bus_Port">
<s1:address
location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
这是我的pom:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jaxws-test</groupId>
<artifactId>jaxws-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>jaxws-test</name>
<dependencies>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.2</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version>0.6.2</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/wsdl</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<configuration>
<verbose>true</verbose>
<wsdlOptions>
<wsdlOption>
<wsdl>src/main/wsdl/ExampleService.wsdl</wsdl>
<extraargs>
<extraarg>-xjc-Xinheritance</extraarg>
</extraargs>
<bindingFiles>
<bindingFile>src/main/wsdl/ExampleBindings.xml</bindingFile>
</bindingFiles>
</wsdlOption>
</wsdlOptions>
</configuration>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>maven2-repository.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
<layout>default</layout>
</repository>
</repositories>
</project>
有谁知道是否有可能让 jaxb2-basics 生成一个通用对象,其类型变量在 jaxb 绑定(bind)文件中指定?
最佳答案
不,目前不可能。
更新
这已经在 0.6.4 中实现了。
关于java - jaxb2-basics是否可以配置为泛型对象的类型变量指定接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7154563/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!