如何在 Web 服务中使用 JAXBElement<String>?

2022-09-01 16:46:56

我正在使用WCF开发一个可互操作的Web服务,我正在从Java客户端使用。当我创建代理类时,它生成了所有的 getter 和 setter 方法以及一个字段。我在JDK API中搜索了这个,并找到了构造函数:JAXBElement<String>

JAXBElement(QName name, Class<T> declaredType, Class scope, T value) 

我应该如何使用这个构造函数?请解释参数,并让我知道互联网上是否有描述其用途的好教程。


答案 1

这个问题的解决方案是,您不需要创建单独的构造函数来创建.可以从方法中检索受尊重的元素。假设你想在响应对象中创建并设置一些值,并且参数是type,那么你需要这样做:JAXBElementobjectFactory.create........()JAXBElement

someResponseObj.setMyValue(objectFactory.create.......()); 
/*method name that will be return a JAXBElement in setter()*/

注意:请检查引用,因为生成的代码中可能有多个类,因此您需要引用与该包的类关联的确切类。ObjectFactoryObjectFactory


答案 2

我只是在做同样的事情,使用Java客户端来计算WCF Web服务。我正在使用jaxws maven插件来生成客户端代码。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <configuration>
        <packageName>com.package1</packageName>
        <sourceDestDir>src/main/java</sourceDestDir>
        <wsdlDirectory>src/main/resources</wsdlDirectory>
        <wsdlFiles>
            <wsdlFile>wcf_webservice.wsdl</wsdlFile>
        </wsdlFiles>
    </configuration>
</plugin>

你应该有一个 ObjectFactory 类,你可以用它来为你创建 JAXBElements,例如:com.package1

ObjectFactory factory = new ObjectFactory();
MyObject myObject = new MyObject();
JAXBElement<MyObject> elem = factory.createMyObject(myObject);

顺便说一句,您需要先平展 wcf wsdl,然后 jaxws 才能使用它。


推荐