首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SLSB和JAX-WS中指定JAXB包

在SLSB和JAX-WS中指定JAXB包
EN

Stack Overflow用户
提问于 2011-04-12 04:29:30
回答 1查看 4.6K关注 0票数 5

我正在使用SLSB和JAX-WS注释创建一个简单的SOAP web服务。我想传递的对象是从OGC模式生成的JAXB,感谢java.net的OGC项目。我遇到问题的一个特殊方法(导致部署失败)是请求对象(GetResult)的字段(eventTime)位于与请求对象不同的包中。此类型的ObjectFactory是不同的,在编组/解组时会出现问题。

我得到的错误的一个子集:

There's no ObjectFactory with an @XmlElementDecl for the element {http://www.opengis.net/ogc}temporalOps. this problem is related to the following location: at protected javax.xml.bind.JAXBElement net.opengis.sos.v_1_0_0.GetResult$EventTime.temporalOps at net.opengis.sos.v_1_0_0.GetResult$EventTime at protected java.util.List net.opengis.sos.v_1_0_0.GetResult.eventTime at net.opengis.sos.v_1_0_0.GetResult at public net.opengis.sos.v_1_0_0.GetResult net.opengis.sos.v_1_0_0.ObjectFactory.createGetResult() at net.opengis.sos.v_1_0_0.ObjectFactory

在标准SE应用程序中,当我像下面这样初始化JAXBContext时,一切工作正常。

代码语言:javascript
复制
   JAXBContext context = JAXBContext.newInstance("net.opengis.sos.v_1_0_0:net.opengis.sensorml.v_1_0_1:net.opengis.sos.v_1_0_0.filter.v_1_1_0");

如何在JAX-WS上下文中设置JAXB包?

我的应用服务器/环境是GF 3.1。

谢谢你的帮助!

史蒂夫

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-20 00:03:29

我让它与@UsesJAXBContext一起工作-一开始有点麻烦,因为NB 6.9和7.0b想要链接UsesJAXBContext和相关版本的com.sun.intral.*,这当然不是JAX-WS RI正在寻找的。一旦我修复了这些问题,并将依赖项添加到jaxws-rt 2.2.3版中,一切都会正常工作。

代码语言:javascript
复制
@WebService(serviceName = "SOS")//, targetNamespace = "http://www.opengis.net/sos/1.0")
@UsesJAXBContext(value = SosServices.SosJaxbContext.class)
//@XmlSeeAlso({net.opengis.sos.v_1_0_0.filter.v_1_1_0.ObjectFactory.class, net.opengis.sensorml.v_1_0_1.ObjectFactory.class})
public class SosServices {

@WebMethod(operationName = "GetResult")
    public GetResultResponse getResult(GetResult request) {
        throw new UnsupportedOperationException();
    }

public static class SosJaxbContext implements JAXBContextFactory {

        @Override
        public JAXBRIContext createJAXBContext(SEIModel sei,
                List<Class> classesToBind, List<TypeReference> typeReferences)
                throws JAXBException {

            List<Class> classList = new ArrayList<Class>();
            classList.addAll(classesToBind);
            classList.add(TemporalOpsType.class);

            List<TypeReference> refList = new ArrayList<TypeReference>();
            refList.addAll(typeReferences);
            refList.add(new TypeReference(new QName("http://www.opengis.net/ogc", "temporalOps"), TemporalOpsType.class));

            return JAXBRIContext.newInstance(classList.toArray(new Class[classList.size()]),
                    refList, null, sei.getTargetNamespace(), false, null);
        }
    }
}

感谢ogc (java.net项目)邮件列表中的Aleksei Valikov指向@UsesJAXBContext!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5627173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档