小编Mot*_*azi的帖子

将 Spring WS 故障状态代码从 500 更改为 400

我已经构建了 Spring WS 应用程序(基于 Spring WS 2.2.3),它公开了一个带有几个操作的小型 Web 服务。每个操作接收输入参数以搜索后端数据库并返回响应。一些参数是强制性的(例如街道名称),并且客户端要求如果对服务的请求缺少其中一些强制性参数(例如空街道名称),那么我的服务应该返回正确的 SOAP 错误,HTTP 状态为 400。

我的异常处理工作正常,如果请求消息中缺少某些必需的参数,我能够将正确的 SOAP 错误返回给客户端,并且 Spring WS 通过包装 SOAP 错误并将其发送回客户端来处理其余部分状态码为 500,如下所示:

HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
SOAPAction: ""
Content-Type: text/xml;charset=utf-8
Content-Length: 503
Date: Thu, 10 Dec 2015 22:28:02 GMT

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SOAP-ENV:Fault>
            <faultcode>SOAP-ENV:Client</faultcode>
            <faultstring xml:lang="en">Street Name is required</faultstring>
        </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

这很好,除了我真的希望 HTTP 状态代码是“400 错误请求”而不是“ 500 内部服务器错误”我不知道如何将状态代码从 500 更改为 400 并获得类似的响应下列的:

HTTP/1.1 400 …
Run Code Online (Sandbox Code Playgroud)

java spring soap web-services spring-ws

6
推荐指数
0
解决办法
2455
查看次数

我如何强制 install4j 在更新时不覆盖特定文件

我已经创建了我的 Install4j 项目,到目前为止我对安装、卸载和更新过程感到满意。但是,出现了一种新情况,当用户更新产品的新版本时,我需要阻止 install4j 覆盖用户安装目录中的特定文件。谁能告诉我如何强制/配置 install4j 以便在更新现有安装时不会覆盖特定文件。

例如,当我安装我的应用程序时,我将一个数据库文件 (mydb.script) 作为安装文件的一部分,以便用户可以使用一个数据库。我发现当我创建应用程序的新版本并再次安装时,install4j 已经检测到我安装了以前的版本并询问我是否要更新该版本。我点击“是”,它就完成了它的工作。但是,在此过程中,它实际上用安装程序内部的数据库覆盖了以前的数据库(导致用户丢失了自第一次安装以来输入的所有数据)。我不想要这种行为。我想告诉 install4j 不要覆盖这个特定的文件(如果它存在)。

java install4j

4
推荐指数
1
解决办法
1045
查看次数

标签 统计

java ×2

install4j ×1

soap ×1

spring ×1

spring-ws ×1

web-services ×1