Tag: web services

如何将POSTMAN中的JSON对象发送到Restful Web服务

我正在尝试将json从POSTMAN发送到RESTful webservice。 我已经按照这个教程url通过POSTMAN发送json。 我的url: HTTP://本地主机:8080 /为MyWebService / REST / dataInsert /插入 我的服务方式: @POST @Path(“/insert”) @Consumes(MediaType.APPLICATION_JSON) public String insertData(JSONObject jsonlist) throws UnknownHostException; 我的Impl: @Override public String insertData(JSONObject jsonlist) throws UnknownHostException { System.out.println(jsonlist); insertDataDao.insertData(jsonlist); return “SUCCESS”; } 我的DAO: public String insertData(JSONObject jsonlist) throws UnknownHostException{ System.out.println(jsonlist); MongoConnection mongoconnection = new MongoConnection(); MongoClient mongoclient = mongoconnection.getMongoClient(); MongoDatabase db = […]

BigDecimal在肥皂信息中有科学记数法

我的网络服务有一个奇怪的问题。 我有对象OrderPosition有一个价格(xsd:decimal,fractionDigits = 9)。 Apache CXF为我生成代理类,这个字段是BigDecimal。 当我想发送大于10000000.00000的值时,soap消息中的这个字段有科学记数法(例如1.1423E + 7)。 如何强制该值未以科学记数法发送。

将Java Date对象映射到XML Schema日期时间格式

我在将Java数据类型映射到标准Schema Date数据类型时遇到了一些问题。 我有一个简单的类,我这样注释。 period实例变量是Java Date对象类型。 @XmlAccessorType(value = XmlAccessType.NONE) public class Chart { @XmlElement private double amount; @XmlElement private double amountDue; @XmlElement private Date period; //constructor getters and setters } 这是我的Web服务 @WebService public class ChartFacade { @WebMethod public Chart getChart() throws ParseException { SimpleDateFormat df = new SimpleDateFormat(“yyyy-mm-dd”); Chart chart = new Chart(20.0,20.5, df.parse(“2001-01-01”)); return chart; […]

使用HTTPS的Web服务

我有一个外部Web服务,它可以通过https工作,我可以使用wsimport生成java类但是当我调用服务时我会收到以下exception: Exception in thread “main” com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.UnknownHostException: ECM01 at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(Unknown Source) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)… Caused by: java.net.UnknownHostException: ECM01 at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) 我调用服务的类是这样的: public static void main(String[] args) { ColleagueServiceService cs = new ColleagueServiceService(); ColleagueService service = cs.getColleagueServicePort(); […]

在CXF客户端中启用gzip压缩

我正在尝试让我的客户端使用gzip。 我在服务器中启用了GZipfunction。 似乎客户端没有发送正确的标头: POST /api/v1/data HTTP/1.1 Content-Type: text/xml; charset=UTF-8 Accept: */* SOAPAction: “” User-Agent: Apache CXF 2.6.2 Cache-Control: no-cache Pragma: no-cache Host: localhost:8001 Connection: keep-alive Content-Length: 539 这是我创建客户端的代码: private static final QName SERVICE_NAME = new QName( “http://xxx/”, “IData”); private static final QName PORT_NAME = new QName( “http://xxx/”, “IDataPort”); IData port; public void initPort() { Service […]

不能在JDK8上使用org.jvnet.jax-ws-commons.jaxws-maven-plugin

我正在使用org.jvnet.jax-ws-commons:jaxws-maven-plugin为Soap服务生成客户端存根。 升级到JDK8使此失败并出现以下错误: Failed to read schema document ‘xxx.xsd’, because ‘file’ access is not allowed due to restriction set by the accessExternalSchema property. 和类似的东西 Failed to read DTD ‘XMLSchema.dtd’, because ‘file’ access is not allowed due to restriction set by the accessExternalDTD property. 为什么这样,我该如何解决这个问题?

使用CXF和wsdl2java生成代码时解决冲突

我在使用wsdl2java通过与Maven的cxf-codegen-plugin的一堆WSDL文件生成代码时遇到了一些冲突。 WSDL声明了同一系统的不同API,并且生成的代码有一些重叠(特别是对于模型类)。 外部系统和WSDL来自第三方,因此不受我们控制。 我遇到的第一个问题是由一个WSDL引起的一个结果ObjectFactory类中的命名冲突。 它定义了一个名为Foo的complexType,它包含一个名为Status的元素,它还定义了一个名为FooStatus的元素。 生成代码时,JAXB会抛出一个拟合,因为ObjectFactory将有两个名为createFooStatus(…)工厂方法,并且在运行时期间最终会出现exception。 我试过向-autoNameResolution提供选项-autoNameResolution但没有用。 我看过“两个声明导致ObjectFactory类中的冲突”和“将外部JAXB绑定文件应用于从WSDL导入的模式元素” ,并基于那些我编写的外部绑定文件重命名其中一个工厂方法。 我在绑定文件中使用SCD而不是XPath,如后一个链接所示,因为我和XPath的问题与作者有同样的问题。 这是有效的,但前提是我单独处理WSDL文件并仅将绑定文件应用于导致冲突的WSDL。 Maven配置如下所示: org.apache.cxf cxf-codegen-plugin 3.0.0-milestone1 generate-proxies generate-sources ${basedir}/First.wsdl ${basedir}/bindings.xml ${basedir}/Second.wsdl ${basedir}/Third.wsdl … More wsdlOption declarations … wsdl2java 现在,如果我这样做,我最终会遇到另一个问题,因为来自不同WSDL文件的生成代码使用相同的包结构。 这在实践中意味着在处理后续WSDL文件时会覆盖ObjectFactory类,这意味着在插件执行之后只存在从最后一个WSDL生成的那个。 我知道我可以更改目标包结构,但是从不同的WSDL生成的代码有很多重叠,复制它会感觉很傻。 我也尝试使用-keep wsdl2java选项,但这似乎没有做任何事情(或者至少ObjectFactory类仍然被覆盖)。 我的理解是,对此的解决方案是使用像这样的Maven配置一次性处理所有WSDL(仅显示配置部分,其他所有部分保持不变): ${basedir}/bindings.xml ${basedir} *.wsdl 但是,这会导致com.sun.istack.SAXParseException2 ,说我的SCD表达式与任何架构组件都不匹配(因为架构组件仅存在于其中一个WSDL中)。 如果我修改WSDL文件本身并使用后面的Maven配置而没有绑定文件,我可以得到我想要的结果。 通过这样做,生成的ObjectFactory是在使用第一个Maven配置单独处理WSDL时创建的合并。 但是,我宁愿不这样做,而是想用外部绑定文件来管理它。 我该如何解决这个问题? 我是否可以编写/应用绑定文件,以便在找不到匹配的模式组件时不会引发exception? 或者我可以单独处理WSDL而不是覆盖ObjectFactory类吗? 或者,我是否只需要将其从不同的WSDL生成到不同的包或者自己编辑WSDL文件? 万一它很重要,我当前的绑定文件看起来像这样(WSDL位于我的项目内与绑定文件在同一目录中):

安装JAX-RS(REST Web服务)1.1时失败。 显示java.lang.NullPointerException

我正在开发一个Acceleo项目,当我生成maven应用程序并更新其依赖项时,我得到一个弹出窗口,显示: Failed while installing JAX-RS (REST Web Services) 1.1.java.lang.NullPointerException ,I我正在使用泽西岛。 当我尝试将其导入其他地方时,同样的问题。 任何提示? 谢谢 错误日志 !ENTRY org.eclipse.m2e.logback.appender 2 0 2013-05-30 15:02:13.572 !MESSAGE The artifact jta:jta:jar:1.0.1b has been relocated to javax.transaction:jta:jar:1.0.1B !ENTRY org.eclipse.m2e.logback.appender 2 0 2013-05-30 15:02:13.807 !MESSAGE The artifact jta:jta:jar:1.0.1b has been relocated to javax.transaction:jta:jar:1.0.1B !ENTRY org.eclipse.wst.common.project.facet.core 4 0 2013-05-30 15:02:14.479 !MESSAGE Failed while installing JAX-RS […]

如何为HTTP GET的多个Key-Value参数设计REST URI

我正在设计一个RESTful API。 一项服务应为多个键值对提供查询function。 例如,客户端可以使用一个HTTP GET请求查询不同的产品和相关数量。 客户想要使用金额44和产品2查询产品1,金额为55.我实际上不希望我的URI看起来像这样: /produkt?productId1=1&productquantity1=44&productId2=2&productquantity2=55 因为我不知道有多少产品被查询。 或者像这样: /produkt?product=1,44&product=2,55 因为客户怎么能知道在逗号之前有productId和逗号之后的数量。 有没有人有其他解决方案? 或者,提供使用一个请求查询多个产品的可能性是不是RESTful? 提供仅查询一个具有相关数量的产品的可能性是否更好?如果客户想要查询更多产品,他们应该发送更多请求?

使用JAX-WS 2.2.5客户端和JDK / JRE 1.5

Java 6随JAX-WS 2.0一起提供。 据我所知,Java 5没有附带JAX-WS。 我能够使用JAX-WS 2.2.5与Java 1.6一起使用Java Endorsed Override Mechansim创建Webservice客户端存根,它将JAX-WS列为可以在Java 6中替换的组件之一。 我所要做的就是在JDK和JRE 6路径中创建一个lib \ endorsed目录,然后将jaxb-api.jar和jaxws-api.jar从JAX-WS 2.2.5复制到名为endorsed的目录中。 JDK和JRE 6都自动选择了2.2.5 JAX-WS。 我在Java 5文档中找不到类似的Java Endorsed Override Mechanism。 我怎么在这里找到一个。 这并没有像Java 6文档那样提及JAX-WS,但它也提到了认可的dirs。 我在JDK和JRE lib目录中创建了一个类似的’endorsed’目录。 我将JAX-WS 2.2.5中的所有jar子(共23个jar子)复制到了背书目录中。 但是,与Java 6不同,javac.exe和java.exe都没有直接选择它。 我不得不使用此命令行参数运行java.exe和javac.exe -Djava.endorsed.dirs=\lib\endorsed 一切似乎工作正常,但我想知道这是否可以保证工作 – 任何人以前遇到的任何问题? JAX-WS 2.2.5是否支持Java 5?