提交 28c83c5e 编写于 作者: W wizardforcel

2020-06-08 11:18:23

上级 41362cb5
......@@ -106,7 +106,7 @@ Jersey 文件下载示例
<artifactId>javax.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>
</dependency>
<!-- Jersey 2.19 -->
<!-- Jersey2.19 -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
......@@ -141,7 +141,7 @@ Jersey 文件下载示例
## 4\. `web.xml`的更改
另外,如果您正在使用[Jersey 2 配置](//howtodoinjava.com/jersey/jersey-2-hello-world-application-tutorial/),请参考`web.xml`文件。
另外,如果您正在使用[Jersey2 配置](//howtodoinjava.com/jersey/jersey-2-hello-world-application-tutorial/),请参考`web.xml`文件。
```java
<!DOCTYPE web-app PUBLIC
......
# Jersey 文件上传示例 – jersey 2 `MultiPartFeature`
# Jersey 文件上传示例 – Jersey2 `MultiPartFeature`
> 原文: [https://howtodoinjava.com/jersey/jersey-file-upload-example/](https://howtodoinjava.com/jersey/jersey-file-upload-example/)
在此 **Jersey 2 文件上传示例**中,我们将学习如何使用 Jersey 的**多部分表单数据支持****上传二进制文件**(例如本示例中的 PDF 文件)。 我们将在下面学习完成功能所需的更改。
在此 **Jersey2 文件上传示例**中,我们将学习如何使用 Jersey 的**多部分表单数据支持****上传二进制文件**(例如本示例中的 PDF 文件)。 我们将在下面学习完成功能所需的更改。
```java
Table of Contents
......@@ -134,7 +134,7 @@ public static void main(String[] args) throws IOException
[**Jersey 文件上传示例源码**](//howtodoinjava.com/wp-content/uploads/2015/08/JerseyDemos-File-Upload.zip)
在评论框中输入您的与 **jersey 2 多部分文件上传示例**相关的问题。
在评论框中输入您的与 **Jersey2 多部分文件上传示例**相关的问题。
学习愉快!
......
......@@ -49,7 +49,7 @@ Demo of Multiple files upload
<artifactId>javax.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>
</dependency>
<!-- Jersey 2.19 -->
<!-- Jersey2.19 -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/jersey/jax-rs-jersey-moxy-json-example/](https://howtodoinjava.com/jersey/jax-rs-jersey-moxy-json-example/)
本教程说明**如何在 Jersey 2.x** 中使用 MOXy JSON 功能。 MOXy 是 Jersey 2.x 中的**默认 JSON 绑定供应器**。 尽管由于性能原因,我个人还是更喜欢 [**Jackson**](http://jersey.576304.n2.nabble.com/Jackson-vs-MOXy-td7581625.html),而不是 MOXy。
本教程说明**如何在 Jersey2.x** 中使用 MOXy JSON 功能。 MOXy 是 Jersey2.x 中的**默认 JSON 绑定供应器**。 尽管由于性能原因,我个人还是更喜欢 [**Jackson**](http://jersey.576304.n2.nabble.com/Jackson-vs-MOXy-td7581625.html),而不是 MOXy。
```java
Table of Contents
......@@ -17,7 +17,7 @@ Demo
## MOXy Maven 依赖项/更改
MOXy 媒体模块是 Jersey 2.x 中的模块之一,您无需在其中明确注册其功能,例如`MoxyJsonFeature`。 一旦 Jersey 检测到添加了它的存在,它就会自动注册。 因此,只需在`pom.xml`中添加 MOXy 依赖项就可以完成一半的工作。
MOXy 媒体模块是 Jersey2.x 中的模块之一,您无需在其中明确注册其功能,例如`MoxyJsonFeature`。 一旦 Jersey 检测到添加了它的存在,它就会自动注册。 因此,只需在`pom.xml`中添加 MOXy 依赖项就可以完成一半的工作。
```java
<dependency>
......@@ -244,9 +244,9 @@ public class JsonMoxyConfigurationContextResolver implements ContextResolver<Mox
以下是演示应用中上述文件的层次结构。
![Jersey 2.x MOXy JSON Demo Application Structure](img/bbbdeceed1ac0a52d8b6db9b2ecc1cb4.png)
![Jersey2.x MOXy JSON Demo Application Structure](img/bbbdeceed1ac0a52d8b6db9b2ecc1cb4.png)
Jersey 2.x MOXy JSON 示例应用结构
Jersey2.x MOXy JSON 示例应用结构
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/jersey/jax-rs-jersey-jsonp-example/](https://howtodoinjava.com/jersey/jax-rs-jersey-jsonp-example/)
本教程介绍了如何在 Jersey 2.x 中使用 [**JSONP**](https://en.wikipedia.org/wiki/JSONP) JSON 供应器。 就像我们在 [Jersey MOXy 示例](//howtodoinjava.com/jersey/jax-rs-jersey-moxy-json-example/)中讨论的一样,JSONP 也可以自动发现。
本教程介绍了如何在 Jersey2.x 中使用 [**JSONP**](https://en.wikipedia.org/wiki/JSONP) JSON 供应器。 就像我们在 [Jersey MOXy 示例](//howtodoinjava.com/jersey/jax-rs-jersey-moxy-json-example/)中讨论的一样,JSONP 也可以自动发现。
```java
Table of Contents
......@@ -15,7 +15,7 @@ Manually adding JsonProcessingFeature
## JSONP Maven 依赖项/更改
JSONP 媒体模块是 Jersey 2.x 中的模块之一,您无需明确注册其功能,例如[`JsonProcessingFeature`](https://jersey.java.net/apidocs/2.0/jersey/org/glassfish/jersey/jsonp/JsonProcessingFeature.html)。 一旦 Jersey 检测到添加了它的存在,它就会自动注册。 因此,只需在`pom.xml`中添加 JSONP 依赖项就可以完成一半的工作。
JSONP 媒体模块是 Jersey2.x 中的模块之一,您无需明确注册其功能,例如[`JsonProcessingFeature`](https://jersey.java.net/apidocs/2.0/jersey/org/glassfish/jersey/jsonp/JsonProcessingFeature.html)。 一旦 Jersey 检测到添加了它的存在,它就会自动注册。 因此,只需在`pom.xml`中添加 JSONP 依赖项就可以完成一半的工作。
```java
<dependency>
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/jersey/jax-rs-gson-example/](https://howtodoinjava.com/jersey/jax-rs-gson-example/)
本教程说明如何将 [**google Gson**](//howtodoinjava.com/best-practices/google-gson-tutorial-convert-java-object-to-from-json/) 与 Jersey 2.x 结合使用。 还有其他一些 Java 库也可以执行此转换,例如 [MOXy](//howtodoinjava.com/jersey/jax-rs-jersey-moxy-json-example/) ,Jackson 或 [JSONP](//howtodoinjava.com/jersey/jax-rs-jersey-jsonp-example/) ; 但是 Gson 很少需要任何预先注解的 Java 类或 Java 类源代码。
本教程说明如何将 [**google Gson**](//howtodoinjava.com/best-practices/google-gson-tutorial-convert-java-object-to-from-json/) 与 Jersey2.x 结合使用。 还有其他一些 Java 库也可以执行此转换,例如 [MOXy](//howtodoinjava.com/jersey/jax-rs-jersey-moxy-json-example/) ,Jackson 或 [JSONP](//howtodoinjava.com/jersey/jax-rs-jersey-jsonp-example/) ; 但是 Gson 很少需要任何预先注解的 Java 类或 Java 类源代码。
```java
Table of Contents
......
......@@ -284,7 +284,7 @@ Employee deleted successfully !!
## 8\. 模型类和配置文件
下面列出了其他用于创建此 **Jersey 2 客户端示例**的文件。
下面列出了其他用于创建此 **Jersey2 客户端示例**的文件。
#### `Employees.java`
......@@ -394,7 +394,7 @@ public class Employee
<artifactId>javax.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>
</dependency>
<!-- Jersey 2.19 -->
<!-- Jersey2.19 -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
......
......@@ -198,7 +198,7 @@ C3P0 是外部连接池的示例。 在本教程中,我们将学习如何将
在本教程中,我将提供有关 Hiberate 二级缓存的概念,并提供使用代码段的示例。
## Hiberate 最佳做法
## Hiberate 最佳实践
#### [**Hiberate `@NaturalId`用法和示例**](//howtodoinjava.com/hibernate/hibernate-naturalid-example-tutorial/ "Hibernate @NaturalId example tutorial")
......
......@@ -305,7 +305,7 @@ Hibernate: update Employee set FIRST_NAME=?, LAST_NAME=? where ID=?
请记住,如果您使用了`saveOrUpdate()`方法代替了上面的`save()`方法,那么结果也将是相同的。 `saveOrUpdate()`既可以用于持久实体也可以用于非持久实体。 持久化实体将得到更新,并且瞬态实体将被插入数据库中。
## 3\. 关于生产代码的建议 - 最佳做法
## 3\. 关于生产代码的建议 - 最佳实践
尝试在生产代码中使用上述代码是不明智的。 理想情况下,您要做的是将 VO 对象传递到 DAO 层,从会话中加载实体,并通过将 VO 数据复制到该实体来更新实体。 这意味着更新是在持久对象上进行的,实际上我们根本不必调用`Session.save()``Session.saveOrUpdate()`
......
......@@ -146,6 +146,6 @@ true
1. 从相同的 Hibernate 会话再次请求持久对象将返回类的“相同 Java 实例”。
2. 从不同的 Hibernate 会话中请求一个持久对象,将返回一个类的“不同的 Java 实例”。
3. 最佳做法是,始终在 Hiberate 实体中实现[`equals()`和`hashCode()`](//howtodoinjava.com/java/related-concepts/working-with-hashcode-and-equals-methods-in-java/ "Working with hashCode and equals methods in java")方法; 并始终仅使用`equals()`方法进行比较。
3. 最佳实践是,始终在 Hiberate 实体中实现[`equals()`和`hashCode()`](//howtodoinjava.com/java/related-concepts/working-with-hashcode-and-equals-methods-in-java/ "Working with hashCode and equals methods in java")方法; 并始终仅使用`equals()`方法进行比较。
**祝您学习愉快!**
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/junit/assumption-based-testcases-in-junit-4/](https://howtodoinjava.com/junit/assumption-based-testcases-in-junit-4/)
[**Junit**](//howtodoinjava.com/junit/ "junit tutorials") 是 Java 编程语言的单元测试框架。 如果您想阅读有关[**最佳做法**](//howtodoinjava.com/category/best-practices/ "best practices guides")的信息,以进行 junit 测试,那么这里是一份出色的[**指南**](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ "Unit testing best practices : Junit Reference guide")供您参考。
[**Junit**](//howtodoinjava.com/junit/ "junit tutorials") 是 Java 编程语言的单元测试框架。 如果您想阅读有关[**最佳实践**](//howtodoinjava.com/category/best-practices/ "best practices guides")的信息,以进行 junit 测试,那么这里是一份出色的[**指南**](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ "Unit testing best practices : Junit Reference guide")供您参考。
在本文中,我正在写有关编写 junit 测试用例的信息,这些用例仅在运行时满足特定条件时才能运行。 例如,我只想在其他网络服务启动时才运行测试用例。 如果服务中断,我不想通过测试。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/junit/junit-testcases-which-expects-exception-on-runtime/](https://howtodoinjava.com/junit/junit-testcases-which-expects-exception-on-runtime/)
[**Junit**](//howtodoinjava.com/junit/ "junit tutorials") 是 Java 编程语言的单元测试框架。 如果您想阅读有关[**最佳做法**](//howtodoinjava.com/category/best-practices/ "best practices guides")的信息,以进行 junit 测试,那么这里是一份出色的[**指南**](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ "Unit testing best practices : Junit Reference guide")供您参考。
[**Junit**](//howtodoinjava.com/junit/ "junit tutorials") 是 Java 编程语言的单元测试框架。 如果您想阅读有关[**最佳实践**](//howtodoinjava.com/category/best-practices/ "best practices guides")的信息,以进行 junit 测试,那么这里是一份出色的[**指南**](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ "Unit testing best practices : Junit Reference guide")供您参考。
在本文中,我正在编写一个示例测试用例,期望在运行时引发异常。 如果它获得预期的异常,则测试通过。 如果未检测到预期的异常,则测试用例失败。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/maven/maven-bom-bill-of-materials-dependency/](https://howtodoinjava.com/maven/maven-bom-bill-of-materials-dependency/)
如果您在项目中为依赖项管理使用过 [**maven**](//howtodoinjava.com/maven/ "Maven Tutorials"),那么您必须至少遇到一个问题,或者可能更多。 问题是**版本不匹配**。 通常,当您获得一些依赖项并将其相关的依赖项与特定版本一起使用时,就会发生这种情况。 并且,如果您已经包含了具有不同版本号的那些依赖项,则它们可能在编译时以及运行时都面临不良结果。
如果您在项目中为依赖项管理使用过 [**maven**](//howtodoinjava.com/maven/ "Maven Tutorials"),那么您必须至少遇到一个问题,或者可能更多。 问题是**版本不匹配**。 通常,当您获得一些依赖项并将其相关的依赖项与特定版本协作时,就会发生这种情况。 并且,如果您已经包含了具有不同版本号的那些依赖项,则它们可能在编译时以及运行时都面临不良结果。
理想情况下,为避免上述问题,您需要明确排除相关的依赖项,但您很有可能会忘记这样做。
......
......@@ -43,7 +43,7 @@ public class Log4j2HelloWorldExample
```
或者,您可以将`ThreadContext``Stack`实现与`ThreadContext.push(String value)`一起使用,如下所示:
或者,您可以将`ThreadContext``Stack`实现与`ThreadContext.push(String value)`协作,如下所示:
```java
//Add context information
......
# Log4j `XMLLayout` – 在 XML 文件中创建日志
# Log4j `XMLLayout` – 以 XML 格式创建日志
> 原文: [https://howtodoinjava.com/log4j/how-to-create-logs-in-xml-format-using-log4j/](https://howtodoinjava.com/log4j/how-to-create-logs-in-xml-format-using-log4j/)
......
......@@ -107,7 +107,7 @@ public class Log4jChangeWatcherService implements Runnable
```
## 2)添加`Log4jConfigurator`,这是您的应用与 log4j 一起使用的接口
## 2)添加`Log4jConfigurator`,这是您的应用与 log4j 协作的接口
此类是一个工具类,它将 log4j 初始化代码和重载策略与应用代码分开。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-tomcat-7-log4j-logging-example/](https://howtodoinjava.com/resteasy/resteasy-tomcat-7-log4j-logging-example/)
[**RESTEasy**](//howtodoinjava.com/restful-web-service/ "Resteasy tutorials") 在日志支持方面非常灵活。 它也可以与 log4j,slf4j 和`java.util.logging`一起使用。 用于确定需要使用哪个日志记录框架的算法是:
[**RESTEasy**](//howtodoinjava.com/restful-web-service/ "Resteasy tutorials") 在日志支持方面非常灵活。 它也可以与 log4j,slf4j 和`java.util.logging`协作。 用于确定需要使用哪个日志记录框架的算法是:
1. 如果 log4j 在应用的类路径中,则将使用 log4j
2. 如果 slf4j 在应用的类路径中,则将使用 slf4j
......
......@@ -407,7 +407,7 @@ public class Employee {
如果在某些情况下需要,可以通过将`@JsonIgnore`注解添加到其设置器来防止该属性成为 JSON 表示的一部分。
## 求验证
## 求验证
接受`PUT``POST`请求时,您需要在请求正文中验证用户提交的实体内容。 Dropwizard 为此使用 Hiberate 验证器。 添加验证需要执行以下步骤。
......
......@@ -34,7 +34,7 @@ Test Dropwizard Basic Auth Code
## 添加自定义主体对象
在安全性方面,主对象表示已为其提供凭据的用户。 它实现了`java.security.Principal`接口。
在安全性方面,主对象表示已为其提供凭据的用户。 它实现了`java.security.Principal`接口。
```java
package com.howtodoinjava.rest.auth;
......@@ -111,7 +111,7 @@ public class AppBasicAuthenticator implements Authenticator<BasicCredentials, Us
```
## 添加自定义授权
## 添加自定义授权
`Authorizer`类负责匹配角色,并确定是否允许用户执行某些操作。
......@@ -227,7 +227,7 @@ public Response getEmployeeById(@PathParam("id") Integer id, @Auth User user) {
这样,您可以根据需要在所有 API 中添加各种认证方案。
## 测试 Dropwizard 基本验证码
## 测试 Dropwizard 基本验证
让我们测试一下我们的安全 API。
......
# [已解决] Dropwizard –无法解析配置(无法将类型 ID “http”解析为子类型)
# [已解决] Dropwizard – 无法解析配置(无法将类型 ID “http”解析为子类型)
> 原文: [https://howtodoinjava.com/dropwizard/solved-dropwizard-failed-parse-configuration-not-resolve-type-id-http-subtype/](https://howtodoinjava.com/dropwizard/solved-dropwizard-failed-parse-configuration-not-resolve-type-id-http-subtype/)
......@@ -16,7 +16,7 @@ default configuration has an error:
at [Source: N/A; line: -1, column: -1] (through reference chain: io.dropwizard.Configuration["server"]->io.dropwizard.server.DefaultServerFactory["applicationConnectors"]->java.util.ArrayList[0])
```
## 解
## 解决方案
上面的异常是因为您在 Maven shade 插件中没有使用 **`ServicesResourceTransformer`** 。 它将`META-INF/services`中的类重新放置,并将`META-INF/services`资源中的条目追加到单个资源中。
......
......@@ -92,7 +92,7 @@ JAX-RS 2.0 在以前的版本中带来了很多改进。 主要改进之一是
保护 RESTful Web 服务的知识与编写它们一样重要。 编写安全的 API 以保护业务非常重要。 但是在开始保护 RESTful API 之前,让我们了解作为开发人员我们有哪些选择? 什么将最适合我们的用例?
## 求验证
## 求验证
#### [使用 Ajax 自定义 HTML 表单](//howtodoinjava.com/resteasy/jax-rs-custom-validation-example-using-ajax/ "JAX-RS custom validation example using ajax")
......@@ -108,13 +108,13 @@ JAX-RS 2.0 在以前的版本中带来了很多改进。 主要改进之一是
了解如何使用 Spring 3 框架编写 RESTful Web 服务
## 记录支持
## 日志支持
#### [RESTEasy + Log4j 示例](//howtodoinjava.com/log4j/resteasy-tomcat-7-log4j-logging-example/ "RESTEasy + Tomcat 7 + Log4j logging example")
在 RESTEasy 应用中添加 log4j 日志记录支持的演示配置
#### [RESTEasy + SLF4jexample](//howtodoinjava.com/resteasy/resteasy-tomcat-7-slf4j-logging-example/ "RESTEasy + Tomcat 7 + SLF4J logging example")
#### [RESTEasy + SLF4j 示例](//howtodoinjava.com/resteasy/resteasy-tomcat-7-slf4j-logging-example/ "RESTEasy + Tomcat 7 + SLF4J logging example")
演示配置以在 RESTEasy 应用中添加 slf4j 日志支持
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-jboss-7-hello-world-application/](https://howtodoinjava.com/resteasy/resteasy-jboss-7-hello-world-application/)
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials") 和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器一起使用。 在本文中,我将在 JBOSS AS7 服务器中构建这样的 hello world 应用。
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials") 和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作。 在本文中,我将在 JBOSS AS7 服务器中构建这样的 hello world 应用。
**使用的环境:**
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-tomcat-hello-world-application/](https://howtodoinjava.com/resteasy/resteasy-tomcat-hello-world-application/)
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**REST API**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials") 和 RESTful Java 应用。 尽管 RESTEasy 不限于仅在 JBOSS 中使用,我们也可以与其他服务器一起使用。 在此 **RESTEasy 示例**中,学习使用 eclipse 和 tomcat 在 Java 中创建静态的 Web 服务
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**REST API**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials") 和 RESTful Java 应用。 尽管 RESTEasy 不限于仅在 JBOSS 中使用,我们也可以与其他服务器协作。 在此 **RESTEasy 示例**中,学习使用 eclipse 和 tomcat 在 Java 中创建静态的 Web 服务
## 1\. 开发环境
......
......@@ -163,7 +163,7 @@ public class UserService
上面的模块注册代码将注册一个新的应用`"/user-management"`,并将所有相关的相对资源请求转发到此应用/模块。
#### 2.4 定义 REST 方法 -GET,PUT,POST 和 DELETE
#### 2.4 定义 REST 方法 - GET,PUT,POST 和 DELETE
如上所述,REST 服务映射了资源表示形式和将更改其内部表示形式的操作。 这些动作应被视为等同于数据库的`SELECT``INSERT``UPDATE``DELETE`操作。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-tomcat-7-slf4j-logging-example/](https://howtodoinjava.com/resteasy/resteasy-tomcat-7-slf4j-logging-example/)
[**RESTEasy**](//howtodoinjava.com/restful-web-service/ "Resteasy tutorials") 在日志支持方面非常灵活。 它也可以与 log4j,slf4j 和`java.util.logging`一起使用。 用于确定需要使用哪个日志记录框架的算法是:
[**RESTEasy**](//howtodoinjava.com/restful-web-service/ "Resteasy tutorials") 在日志支持方面非常灵活。 它也可以与 log4j,slf4j 和`java.util.logging`协作。 用于确定需要使用哪个日志记录框架的算法是:
1. 如果 log4j 在应用的类路径中,则将使用 log4j
2. 如果 slf4j 在应用的类路径中,则将使用 slf4j
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-tomcat-7-log4j-logging-example/](https://howtodoinjava.com/resteasy/resteasy-tomcat-7-log4j-logging-example/)
[**RESTEasy**](//howtodoinjava.com/restful-web-service/ "Resteasy tutorials") 在日志支持方面非常灵活。 它也可以与 log4j,slf4j 和`java.util.logging`一起使用。 用于确定需要使用哪个日志记录框架的算法是:
[**RESTEasy**](//howtodoinjava.com/restful-web-service/ "Resteasy tutorials") 在日志支持方面非常灵活。 它也可以与 log4j,slf4j 和`java.util.logging`协作。 用于确定需要使用哪个日志记录框架的算法是:
1. 如果 log4j 在应用的类路径中,则将使用 log4j
2. 如果 slf4j 在应用的类路径中,则将使用 slf4j
......
......@@ -4,7 +4,7 @@
在以前的文章中,我们了解了[**文件下载**](//howtodoinjava.com/resteasy/resteasy-file-download-example/ "RESTEasy + File download example")以及构建 [**RESTful 客户端**](//howtodoinjava.com/apache-commons/jax-rs-restful-client-using-apache-httpclient/ "JAX-RS RESTful client using apache httpclient")的知识。 现在,让我们继续前进。 在这篇文章中,我将提供使用 jax-rs resteasy 上传文件的示例代码。 要上传文件,将使用[**`httpclient`**](https://hc.apache.org/httpclient-3.x/ "http client")库代替 HTML 表单。
我正在使用[**`MultipartFormDataInput`**](http://docs.jboss.org/resteasy/docs/1.2.GA/javadocs/org/jboss/resteasy/plugins/providers/multipart/MultipartFormDataInput.html "MultipartFormDataInput")类,它是 **resteasy-multipart** 插件的一部分。
我正在使用[**`MultipartFormDataInput`**](http://docs.jboss.org/resteasy/docs/1.2.GA/javadocs/org/jboss/resteasy/plugins/providers/multipart/MultipartFormDataInput.html "MultipartFormDataInput")类,它是`resteasy-multipart`插件的一部分。
**1)更新项目的 Maven 依赖项**
......
......@@ -2,11 +2,11 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-jaxb-xml-example/](https://howtodoinjava.com/resteasy/resteasy-jaxb-xml-example/)
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials")和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器一起使用
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials")和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作
另一方面, [**JAXB**](https://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding "jaxb") 用于将 Java 类映射到等效的 xml 文档,反之亦然。 它是使用 JAXB 的编组和解组功能完成的。
在本文中,我演示了将 JAXB 与 RESTEasy 一起使用的方式,以将 API 响应转换为 xml 格式。
在本文中,我演示了将 JAXB 与 RESTEasy 协作的方式,以将 API 响应转换为 xml 格式。
**使用的环境:**
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-jettison-json-example/](https://howtodoinjava.com/resteasy/resteasy-jettison-json-example/)
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials")和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器一起使用
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials")和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作
[**Jettison**](https://github.com/jettison-json/jettison "Jettison") 是可读写 JSON 的 Java API(如 STaX 和 DOM)的集合。 它是使用编组和解组功能完成的。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/resteasy-jackson-json-example/](https://howtodoinjava.com/resteasy/resteasy-jackson-json-example/)
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials")和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器一起使用
[**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials")和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作
**Jackson** 是用于处理 JSON 数据格式的多功能 Java 库。 Jackson 的目标是为开发人员提供快速,正确,轻巧和人体工程学的最佳组合。
......
......@@ -93,7 +93,7 @@ public class User implements Serializable {
```
## 2)创建 RESTFul Web 服务用户客户端
## 2)创建 RESTFul Web 服务用户客户端
我们的 Java 客户端基于`java.net`包 API。 我在这里做两个步骤:
......
......@@ -40,7 +40,7 @@
```
## 第 3 步)编写需要从 javascript/ajax 中调用的 REST API
## 步骤 3)编写需要从 javascript/ajax 中调用的 REST API
我正在编写一个最小的 REST API,以使示例不复杂。
......
# RESTEasy 最佳做法
\ No newline at end of file
# RESTEasy 最佳实践
\ No newline at end of file
# RESTEasy - 与 `ResteasyProviderFactory`共享上下文数据
# RESTEasy - 与`ResteasyProviderFactory`共享上下文数据
> 原文: [https://howtodoinjava.com/resteasy/share-context-data-with-jax-rs-resteasyproviderfactory/](https://howtodoinjava.com/resteasy/share-context-data-with-jax-rs-resteasyproviderfactory/)
......
......@@ -88,7 +88,7 @@ public class User implements Serializable
```
## 步骤 3)DAO 层具有访问和修改资源的方法
## 步骤 3)在 DAO 层添加访问和修改资源的方法
我出于示例目的使用了静态`HashMap`。 在实时应用中,它将是一个数据库。 例如,我在映射中仅添加了一个用户。
......
# Jersey 2 hello world 示例– Jersey 2 教程
# Jersey2 hello world 示例 – Jersey2 教程
> 原文: [https://howtodoinjava.com/jersey/jersey2-hello-world-example/](https://howtodoinjava.com/jersey/jersey2-hello-world-example/)
我已经发布了许多教程,以使用 RESTEasy 开发 [REST api。 在本 **Jersey 2 教程**中,我将详细介绍配置步骤,以设置](//howtodoinjava.com/restful-web-service/) [Jersey 2 示例](https://jersey.java.net/) Web 应用项目。
我已经发布了许多教程,以使用 RESTEasy 开发 [REST api](//howtodoinjava.com/restful-web-service/)。 在本 **Jersey2 教程**中,我将详细介绍配置步骤,以设置 [Jersey2 示例](https://jersey.java.net/) Web 应用项目。
```java
Table of Contents
1\. What changed from Jersey 1.x to Jersey 2.x
2\. Jersey 2 maven dependencies
1\. What changed from Jersey 1.x to Jersey2.x
2\. Jersey2 maven dependencies
3\. web.xml Changes
4\. Jersey rest api code
```
## 1\. 什么从 Jersey 1.x 更改为 Jersey 2.x
## 1\. 从 Jersey 1.x 到 Jersey2.x 改变了什么
开发了 Jersey 1.x 的 Jersey 团队[加入了新组织 GlassFish](https://stackoverflow.com/questions/17089250/difference-com-sun-jersey-and-org-glassfish-jersey) ,并且所有新的升级版本均从 2.x 开始发布。 它改变了框架功能的许多方面。 您可以在[官方迁移指南](https://jersey.java.net/documentation/latest/migration.html#mig-1.x)中查看更改列表。
尽管他们在指南中涵盖了许多更改,但是您可能会面临许多其他更改,并且可能会很难解决这些问题。 记住。
## 2\. Jersey 2 Maven 依赖项
## 2\. Jersey2 Maven 依赖项
首先更改,您需要在 jersey 1.x 应用中创建 pom.xml。 依赖项发生了变化。 在 Jersey 2.x 项目中使用以下依赖项。 我正在使用 Jersey 2.19(最新日期)。
首先更改,您需要在 jersey 1.x 应用中创建 pom.xml。 依赖项发生了变化。 在 Jersey2.x 项目中使用以下依赖项。 我正在使用 Jersey2.19(最新日期)。
我的`pom.xml`文件如下所示。
......@@ -52,7 +52,7 @@ Table of Contents
<artifactId>javax.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>
</dependency>
<!-- Jersey 2.19 -->
<!-- Jersey2.19 -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
......@@ -85,7 +85,7 @@ Table of Contents
```
## 3\. Jersey 2 示例– web.xml 更改
## 3\. Jersey2 示例 – `web.xml`更改
您需要在`web.xml`文件中进行第二次更改。 通常,更改是将旧的包名称替换为新的包名称。
......@@ -117,7 +117,7 @@ Table of Contents
```
## 4\. Jersey 2 示例– REST API 代码
## 4\. Jersey2 示例 – REST API 代码
REST 服务代码将基本相同。 如果发现任何问题,只需参考迁移指南或给我评论。
......@@ -133,13 +133,13 @@ public class JerseyService
@GET
public String getMsg()
{
return "Hello World !! - Jersey 2";
return "Hello World !! - Jersey2";
}
}
```
当您在 *tomcat 8* 服务器中的 *Jersey 2* 应用上方运行并点击 URL“`http://localhost:8080/JerseyDemos/rest/message`”时,会显示以下消息。
当您在 *tomcat 8* 服务器中的 *Jersey2* 应用上方运行并点击 URL“`http://localhost:8080/JerseyDemos/rest/message`”时,会显示以下消息。
包![jersey-2 hello world](img/61e948f4dfd1e01a479660ec2aa729ae.png)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册