GlassFish 3.1.2充满了MOXy(EclipseLink JAXB)

我非常高兴地宣布, EclipseLink JAXB(MOXy)现在是GlassFish 3.1.2中的JAXB( JSR-222 )提供程序。 我要感谢EclipseLink和GlassFish提交者为实现这一目标付出的​​辛勤工作。

在本文中,我将介绍如何利用MOXy创建JAX-WS服务。 在以后的文章中,我将更详细地介绍更多扩展。

可以从以下链接下载GlassFish:

  • http://glassfish.java.net/public/downloadsindex.html



网络服务(JAX-WS)

对于这篇文章,我们将实现一个简单的服务,该服务通过ID查找客户。 由于这只是“ Hello World”类型的示例,因此该服务将始终返回名称为“ Jane Doe”的客户。

package blog.jaxws.service;import javax.jws.*;
import blog.jaxws.model.Customer;@WebService
public class FindCustomer {@WebMethodpublic Customer findCustomer(int id) {Customer customer = new Customer();customer.setId(id);customer.setFirstName("Jane");customer.setLastName("Doe");return customer;}}

WEB-INF / sun-jaxws.xml

有多种方法可以将MOXy指定为JAXB提供程序。 我的偏好是使用位于WEB-INF目录中的sun-jaxws.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<endpointsxmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"version="2.0"><endpointname='FindCustomer'implementation='blog.jaxws.service.FindCustomer'url-pattern='/FindCustomerService'databinding='eclipselink.jaxb'/>
</endpoints>

模型

当MOXy被指定为JAXB提供程序时,我们可以利用其所有映射扩展。 在此示例中,我们将使用@XmlPath进行基于XPath的映射 。

package blog.jaxws.model;import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlPath;@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder={"firstName", "lastName"})
public class Customer {@XmlAttributeprivate int id;@XmlPath("personal-info/first-name/text()")private String firstName;@XmlPath("personal-info/last-name/text()")private String lastName;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}}

WSDL

以下是为此服务生成的WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2-b13 (branches/2.2-6964; 2012-01-09T18:04:18+0000) JAXWS-RI/2.2.6-promoted-b20 JAXWS/2.2 svn-revision#unknown. -->
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2-b13 (branches/2.2-6964; 2012-01-09T18:04:18+0000) JAXWS-RI/2.2.6-promoted-b20 JAXWS/2.2 svn-revision#unknown. -->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.jaxws.blog/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://service.jaxws.blog/" name="FindCustomerService"><types><xsd:schema><xsd:import namespace="http://service.jaxws.blog/" schemaLocation="http://www.example.com:8080/Blog-JAXWS2/FindCustomerService?xsd=1"/></xsd:schema></types><message name="findCustomer"><part name="parameters" element="tns:findCustomer"/></message><message name="findCustomerResponse"><part name="parameters" element="tns:findCustomerResponse"/></message><portType name="FindCustomer"><operation name="findCustomer"><input wsam:Action="http://service.jaxws.blog/FindCustomer/findCustomerRequest" message="tns:findCustomer"/><output wsam:Action="http://service.jaxws.blog/FindCustomer/findCustomerResponse" message="tns:findCustomerResponse"/></operation></portType><binding name="FindCustomerPortBinding" type="tns:FindCustomer"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/><operation name="findCustomer"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation></binding><service name="FindCustomerService"><port name="FindCustomerPort" binding="tns:FindCustomerPortBinding"><soap:address location="http://www.example.com:8080/Blog-JAXWS/FindCustomerService"/></port></service>
</definitions>

XML模式

下面是为该模型生成的WSDL引用的XML模式。 请注意,它如何包含@XmlPath批注中指定的“个人信息”元素。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.2-b13 (branches/2.2-6964; 2012-01-09T18:04:18+0000) JAXWS-RI/2.2.6-promoted-b20 JAXWS/2.2 svn-revision#unknown. -->
<xsd:schema xmlns:ns0="http://service.jaxws.blog/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"targetNamespace="http://service.jaxws.blog/"><xsd:complexType name="findCustomerResponse"><xsd:sequence><xsd:element name="return" type="ns0:customer" minOccurs="0" /></xsd:sequence></xsd:complexType><xsd:complexType name="findCustomer"><xsd:sequence><xsd:element name="arg0" type="xsd:int" /></xsd:sequence></xsd:complexType><xsd:complexType name="customer"><xsd:sequence><xsd:element name="personal-info" minOccurs="0"><xsd:complexType><xsd:sequence><xsd:element name="first-name" type="xsd:string"minOccurs="0" /><xsd:element name="last-name" type="xsd:string"minOccurs="0" /></xsd:sequence></xsd:complexType></xsd:element></xsd:sequence><xsd:attribute name="id" type="xsd:int" use="required" /></xsd:complexType><xsd:element name="findCustomerResponse" type="ns0:findCustomerResponse" /><xsd:element name="findCustomer" type="ns0:findCustomer" />
</xsd:schema>

服务请求

以下是对我们服务的要求:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header/><S:Body><ns2:findCustomer xmlns:ns2="http://service.jaxws.blog/"><arg0>123</arg0></ns2:findCustomer></S:Body>
</S:Envelope>

服务回应

响应利用了我们在Customer类上使用的@XmlPath批注,将firstNamelastName属性映射到XML。

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns0:findCustomerResponse xmlns:ns0="http://service.jaxws.blog/"><return id="123"><personal-info><first-name>Jane</first-name><last-name>Doe</last-name></personal-info></return></ns0:findCustomerResponse></S:Body>
</S:Envelope>

进一步阅读

如果您喜欢这篇文章,那么您可能会对以下内容感兴趣:

  • EclipseLink MOXy是WebLogic Server 12c中的JAXB提供程序
  • 基于XPath的映射-地理编码示例
  • 将对象映射到多个XML模式–天气示例
  • JAX-RS服务中的MOXy的XML元数据
  • JPA实体到XML –双向关系

参考: GlassFish 3.1.2在我们的JCG合作伙伴 Blaise Doughan的Java XML&JSON Binding博客中充满了MOXy(EclipseLink JAXB) 。


翻译自: https://www.javacodegeeks.com/2012/04/glassfish-312-is-full-of-moxy.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

梦断代码阅读笔记03

读完《梦断代码(Dream In Code)》样书&#xff0c;我感觉心情有点沉重&#xff0c;Chandler项目的结局&#xff0c;它失败了&#xff0c;它成了众多失败软件项目中的一个。这个结局让那个我感受到软件实在是太难了&#xff0c;我觉得当初选这个专业可能到最后只是一个码农。但是…

Java访问权限的范围

二、下面用表格来展示四种修饰符的访问权限范围&#xff1a; 同一个类 同一个包 不同包的子类 不同包的非子类 public √ √ √ √ protected √ √ √ 默认(default) √ √ private √ 转载于:https://www.cnblogs.com/jianxin-lilang/p/6…

JavaFX 2 GameTutorial第2部分

介绍 Ť他的是一系列与一个JavaFX 2游戏教程博客条目的第二批。 如果您尚未阅读第1部分&#xff0c;请参阅JavaFX 2游戏教程的简介部分。 在第1部分中&#xff0c;我提到了游戏的某些方面以及原型飞船的简单演示&#xff08;原型由简单的形状组成&#xff09;&#xff0c;该飞船…

sqlyog连接mysql教程_如何用SQLyog实现远程连接MySQL

SQLyog客户端&#xff0c;用root用户远程链接MySQL时&#xff0c;提示ldquo;访问被拒绝rdquo;&#xff0c;在网上搜索了一下原因。原来是MySQL没有授权其远程链1&#xff0c;SQLyog客户端&#xff0c;&#xff0c;用root用户远程链接MySQL时&#xff0c;提示“访问被拒绝”&…

动态SQL+变量绑定:解决ORA-01704: 字符串文字太长的问题

最近在做一个ESB项目&#xff0c;有一个trigger里面执行动态SQL的时候报错&#xff1a; ORA-01704: 字符串文字太长 经检查发现SQL里面有个字段是clob类型&#xff0c;内容长度4009&#xff0c;在oracle里面&#xff0c; 一对引号内的字符长度如果超过4000&#xff0c;就会报OR…

JavaME:Google静态地图API

无论您是需要基于位置的应用程序的地图还是只是出于娱乐目的&#xff0c;都可以使用有史以来最简单的方法&#xff1a;Google Static Maps API。 在这篇文章中&#xff0c;我们将看到如何从纬度和经度获得地图作为图像。 可以使用Location API获得纬度和经度&#xff0c;我们将…

在ASP.NET中实现OAuth2.0(一)之了解OAuth

1、什么是OAuth2.0 是一个开放授权标准&#xff0c;允许用户让第三方应用访问该用户在某一个网站或平台上的私密资源&#xff08;如照片、视频、联系人等&#xff09;&#xff0c;而无须将用户名和密码提供给第三方应用 2、OAuth2.0授权模式 授权码模式&#xff08;authorizati…

mysql日期条件如何应用_MySQL如何使用时间作为判断条件

背景&#xff1a;在开发过程中&#xff0c;我们经常需要根据时间作为判断条件来查询数据&#xff0c;例如&#xff1a;当月&#xff0c;当日&#xff0c;当前小时&#xff0c;几天内......1. 当月我们只需要使用一个mysql的month(date)函数即可实现。(注意判断年份)month(date)…

深入探讨JS中的数组排序函数sort()和reverse()

最近在研究Javascript发现了其中一些比较灵异的事情。有点让人感到无语比如&#xff1a; alert(typeof( NaN NaN));//结果为假。 alert(typeof( NaN ! NaN));//结果为真。 嘿嘿&#xff0c;当然这个不是这篇文章要讨论的!!开始我们的正文 首先&#xff0c;我们来看一下JS中sor…

带有谓词的Java中的功能样式-第1部分

您一直在听到将要席卷全球的函数式编程&#xff0c;而您仍然坚持使用普通Java&#xff1f; 不用担心&#xff0c;因为您已经可以在日常Java中添加一些功能样式。 此外&#xff0c;它很有趣&#xff0c;可以节省许多代码行并减少错误。 什么是谓词&#xff1f; 实际上&#xff…

宝塔添加多占点_宝塔面板启用WordPress多站点子域名、子目录

其实在很早以前&#xff0c;陌小雨就听说了 wordpress 的多站点功能&#xff0c;不过因为不清楚&#xff0c;所以懒得折腾&#xff0c;这不这几天闲着蛋疼&#xff0c;好好研究了下这玩意&#xff0c;用起来的感觉还是相当不错的&#xff0c;总结起来就是如果你准备开始用 word…

centos 6.5下安装文件上传下载服务

centos 6.5下安装文件上传下载服务 由于每次在CentOS中要下载一些配置文件到物理机&#xff0c;和上传一些文件到服务器&#xff0c;导致来回的开启ftp软件有点麻烦&#xff0c;这里我们可以使用文件上传下载服务&#xff0c;来解决上传和下载的问题。 1.登录服务器 2.执行命令…

Jenkins 入门系列--jenkins 介绍

第一章 Jenkins是什么&#xff1f; Jenkins 是一个可扩展的持续集成引擎。 主要用于&#xff1a; l 持续、自动地构建/测试软件项目。 l 监控一些定时执行的任务。Jenkins拥有的特性包括&#xff1a; l 易于安装-只要把jenkins.war部署到servlet容器&#xff0c;不需要数据库支…

在方法参数上使用final关键字

经过一些自己的混淆&#xff0c;最终博客方法的具体含义&#xff08;最终声明的方法参数&#xff09;将对此博客条目进行澄清。 至少可以将方法参数上的final关键字视为Java编译器的指示符&#xff0c;表明该参数不能重新分配给另一个引用。 Java参数处理始终是“按值调用” &a…

PHP MySQLi 增删改查

最近几天&#xff0c;我们一直在学习利用MySQLi访问数据库并对其中的数据进行操作。今天给大家展现一个完整的例子&#xff0c;我们来制作一个新闻发布系统&#xff0c;利用MySQLi来操作数据库&#xff0c;实现对新闻的添加、修改、删除、查询等基本功能。&#xff08;以下代码…

20162303《程序设计与数据结构》第一周学习总结

学号 2016-2017-2 《程序设计与数据结构》第1周学习总结 教材学习内容总结 本周学习了基本的JAVA知识&#xff0c;虽然比较基础&#xff0c;但是在实际过程中还是出现了许许多多的问题&#xff0c;代码一遍遍的敲错&#xff0c;又一遍遍的修改&#xff0c;刚开始甚至不会切换模…

Java EE与NoSQL的未来

自一段时间以来&#xff0c;我一直在关注NoSQL的近期发展势头&#xff0c;似乎这个流行语也引起了企业Java界的某种关注。 即EclipseLink 2.4开始支持MongoDB和Oracle NoSQL 。 将EclipseLink作为JPA参考实现&#xff0c;您可能想知道这对Java EE 7意味着什么。这里简短说明&am…

【C/C++开发】C语言实现函数可变参数

函数原型: int printf(const char *format[,argument]...) 返 回 值: 成功则返回实际输出的字符数&#xff0c;失败返回-1. 函数说明: 在printf()函数中&#xff0c;format后面的参数个数不确定&#xff0c;且类型也不确定&#xff0c;这些参数都存放在栈内.调用…

java postgresql json_java – 将PostgreSQL JSON列映射到Hibernate值类...

See PgJDBC bug #265.PostgreSQL对数据类型转换过于严格,非常严格.它不会隐式地将文本转换为类似文本的值,例如xml和json.解决此问题的严格正确方法是编写使用JDBC setObject方法的自定义Hibernate映射类型.这可能有点麻烦,所以你可能只想通过创建一个较弱的强制转换来使Postgr…

面向接口编程详解(三)——模式研究

通过前面两篇&#xff0c;我想各位朋友对“面向接口编程”的思想有了一定认识&#xff0c;并通过第二篇的例子&#xff0c;获得了一定的直观印象。但是&#xff0c;第二篇中的例子旨在展示面向接口编程的实现方法&#xff0c;比较简单&#xff0c;不能体现出面向接口编程的优势…