草庐IT

java - SOAP WS - 使@WebParam 可选

我有一个非常简单的方法,我通过JAX-WS注释在WSAPI中使用它:@WebMethodpublicMyResponsesendSingle2(@WebParam(name="username")Stringusername,@WebParam(name="password")Stringpassword,@WebParam(name="newParam")StringnewParam){//thecode}现在我希望newParam是可选的。我的意思是我希望该方法不仅在传递的xml中的参数为空时仍然有效:userpass而且当它不存在时:userpass我需要它不破坏现有的API,它

java - 在 JaxB 中解码集合

假设我有这个类:publicclassA{privateHashMapmap;@XmlElementprivatevoidsetB(ArrayListcol){...}privateArrayListgetB(){...}}当尝试使用JaxB将xml文档解码到此类时,我注意到JaxB没有调用setB()方法并向我发送B实例列表,而是实际调用了getB()并将B实例添加到返回列表中.为什么?我想要调用setter的原因是列表实际上只是一个临时存储,我想从中构建映射字段,所以我想在setter中进行。谢谢。 最佳答案 这就是jaxb处理

java - 参数 JAXBElement 字符串

我有一个关于JAXB的简单问题。这是示例代码://setterthathasinputJAXBElementb.setBIC(JAXBElementvalue);如何初始化使用来自其他对象的字符串的输入元素? 最佳答案 您可以直接创建JAXBElement的实例,或者如果您从XML模式生成Java模型,则对生成的ObjectFactory类使用方便的方法。packageorg.example.schema;importjavax.xml.bind.*;importjavax.xml.namespace.QName;publiccla

java - 为 JAXBElement<String> 设置值

我有一个生成的类,如下所示。我需要从POJO调用setAmount(),但我不知道要为arg传递什么值。它采用JAXBElement类型,但我还没有找到实例化它的方法。我有一个ObjectFactory,但它只创建类CardRequest。谁能推荐一个方法?@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name="",propOrder={"amount",})@XmlRootElement(name="card-request")publicclassCardRequest{@XmlElementRef(name="amount",nam

java - 没有 XmlRootElement 注释的 JAXB 解码?

有什么方法可以在没有@XmlRootElement注释的情况下为类取消编码?还是我们有义务输入注释?例如:publicclassCustomer{privateStringname;privateintage;privateintid;publicStringgetName(){returnname;}@XmlElementpublicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}@XmlElementpublicvoidsetAge(intage){this.age=age;}publicin

java - JAXB 注释

我需要一些关于JAXB注释的帮助,但我找不到好的文档可以帮助我解决这个问题。我有一个要编码为XML的类。我的类(class)看起来像这样:@XmlRootElement(name="car")@XmlAccessorType(XmlAccessType.FIELD)@XmlType(propOrder={"vid","make","model","recalls","engSpec"})publicclassCar{@XmlElement(name="vid",required=true)privateStringvid;@XmlElement(name="make",required

java - 使用 namespace 和前缀的 JAXB 解码

我正在使用JAXB从SOAP响应中解析xml元素。我已经为xml元素定义了POJO类。我已经测试了没有命名空间的pojo类并为其添加前缀工作正常。虽然当我尝试使用命名空间和前缀进行解析时面临以下异常。要求是解析来自SOAPMessage对象的输入javax.xml.bind.UnmarshalException:unexpectedelement(uri:"http://schemas.xmlsoap.org/soap/envelope/",local:"Envelope").Expectedelementsare尝试通过为package-info.java中的包创建@XMLSchem

java - 使用 JAXB 创建不可变对象(immutable对象)

我正在使用JAXB从XSD文件创建Java对象。我正在创建不可变包装器来隐藏JAXB生成的对象(之前我正在更新JAXB对象以实现不可变接口(interface)并将接口(interface)返回给客户端。但意识到更改自动生成的类是不好的,因此使用包装器)目前我正在将这些不可变的包装器返回给客户端应用程序。是否有任何选项可以使自动生成的类不可变,并且可以避免创建不可变包装器的额外工作。鼓励任何其他方法。谢谢 最佳答案 从JSR-133(Java1.5依赖项)开始,您可以使用反射来设置未初始化的最终变量。因此您可以在私有(private

java - JAXB 的动态标签名称

我正在使用Jersey和JAXB构建一个简单的RESTful网络服务我有一个从“String”到“Integer”的HashMap:2010-04->242010-05->45我需要生成如下所示的XML响应:2445使用JAXB生成动态标记名称的最佳方法是什么? 最佳答案 您可以使用一个带有@XmlAnyElement注释的属性并将元素作为JAXBElement返回:privateMapmonths=...;@XmlAnyElementpublicList>getMonths(){List>elements=newArrayList

java - wsimport - 两个声明导致冲突,给定同一行

尝试使用wsimport为SOAP端点生成客户端。WSDL和所有使用的XSD文件都是本地副本。这是正在执行的命令:wsimport./bwWsdl.xml-pcom.generated-Xnocompile-d../src-extension-keep-XadditionalHeaders-B-XautoNameResolution这给出了这个错误:[ERROR]TwodeclarationscauseacollisionintheObjectFactoryclass.line16offile:/schemas/newSchema.xsd[ERROR](Relatedtoaboveer