提交 95140a1d 编写于 作者: W wizardforcel

2020-06-06 22:37:25

上级 88e596dd
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/jersey/jersey-custom-logging-request-and-response-entities-using-filter/](https://howtodoinjava.com/jersey/jersey-custom-logging-request-and-response-entities-using-filter/)
默认情况下,Jersey 使用 JUL 进行日志记录-不会在日志中打印请求/响应实体主体。 要打印实体内容,必须创建自己的`LoggingFiler`,并将其注册为默认值`org.glassfish.jersey.filter.LoggingFilter`。 在此示例中,我正在创建一个这样的基本`CustomLoggingFilter`,它扩展了`org.glassfish.jersey.filter.LoggingFilter`并实现了`ContainerRequestFilter``ContainerResponseFilter`接口,以便它可以拦截正在进行的请求和响应。
默认情况下,Jersey 使用 JUL 进行日志记录 - 不会在日志中打印请求/响应实体主体。 要打印实体内容,必须创建自己的`LoggingFiler`,并将其注册为默认值`org.glassfish.jersey.filter.LoggingFilter`。 在此示例中,我正在创建一个这样的基本`CustomLoggingFilter`,它扩展了`org.glassfish.jersey.filter.LoggingFilter`并实现了`ContainerRequestFilter``ContainerResponseFilter`接口,以便它可以拦截正在进行的请求和响应。
```java
Table of Contents
......
# Jersey -如何在 REST API 响应中设置 Cookie
# Jersey - 如何在 REST API 响应中设置 Cookie
> 原文: [https://howtodoinjava.com/jersey/jersey-how-to-set-cookie-in-rest-api-response/](https://howtodoinjava.com/jersey/jersey-how-to-set-cookie-in-rest-api-response/)
......
......@@ -33,7 +33,7 @@ client.register(feature);
```
#### 1.2 基本认证-非强制模式
#### 1.2 基本认证 - 非强制模式
```java
HttpAuthenticationFeature feature = HttpAuthenticationFeature.basicBuilder()
......
......@@ -27,7 +27,7 @@ Table of Contents
将持久化对象的类或其实体名称传递给`createCriteria()`方法,然后 hibernate 将创建一个`Criteria`对象,当您的应用执行条件查询时,该对象将返回持久化对象的类的实例。
条件查询的最简单示例是没有可选参数或限制的条件查询-条件查询将仅返回与该类相对应的每个对象。
条件查询的最简单示例是没有可选参数或限制的条件查询 - 条件查询将仅返回与该类相对应的每个对象。
```java
Criteria crit = session.createCriteria(Product.class);
......
......@@ -205,7 +205,7 @@ List results = query.list();
通过数据库查询的结果集进行分页是一种非常常见的应用模式。 通常,将分页用于返回大量查询数据的 Web 应用。 Web 应用将浏览数据库查询结果集以为用户构建适当的页面。 如果 Web 应用将每个用户的所有数据都加载到内存中,则该应用将非常慢。 相反,您可以浏览结果集并检索要一次显示一个块的结果。
查询界面上有两种分页方法:`setFirstResult()``setMaxResults()``setFirstResult()`方法采用一个代表结果集中第一行的整数,从第 0 行开始。您可以使用`setMaxResults()`方法告诉 Hibernate 仅检索固定数量的对象。 您的 HQL 保持不变-您只需要修改执行查询的 Java 代码即可。
查询界面上有两种分页方法:`setFirstResult()``setMaxResults()``setFirstResult()`方法采用一个代表结果集中第一行的整数,从第 0 行开始。您可以使用`setMaxResults()`方法告诉 Hibernate 仅检索固定数量的对象。 您的 HQL 保持不变 - 您只需要修改执行查询的 Java 代码即可。
```java
Query query = session.createQuery("from Product");
......@@ -319,7 +319,7 @@ List<Supplier> suppliers = query.list();
您可以修改 SQL 语句,使其与 Hibernate 的 ORM 层一起使用。 您确实需要修改 SQL 以包括与对象或对象属性相对应的 Hibernate 别名。 您可以使用`{objectname.*}`指定对象的所有属性,也可以直接使用`{objectname.property}`指定别名。
Hibernate 使用这些映射将您的对象属性名称转换为它们的基础 SQL 列。 这可能不是您期望 Hibernate 正常工作的确切方式,因此请注意,您确实需要修改 SQL 语句以获得完整的 ORM 支持。 您尤其会在带有子类的类上遇到本机 SQL 的问题-确保您了解如何在单个表或多个表之间映射继承,以便从表中选择正确的属性。
Hibernate 使用这些映射将您的对象属性名称转换为它们的基础 SQL 列。 这可能不是您期望 Hibernate 正常工作的确切方式,因此请注意,您确实需要修改 SQL 语句以获得完整的 ORM 支持。 您尤其会在带有子类的类上遇到本机 SQL 的问题 - 确保您了解如何在单个表或多个表之间映射继承,以便从表中选择正确的属性。
Hibernate 原生 SQL 支持的基础是`org.hibernate.SQLQuery`接口,该接口扩展了`org.hibernate.Query`接口。 您的应用将使用`Session`接口上的`createSQLQuery()`方法从会话中创建本机 SQL 查询。
......
......@@ -346,7 +346,7 @@ private String firstName;
## 使用`@Transient`省略持久化
某些字段(例如,计算值)只能在运行时使用,并且应将它们保留在数据库中,并从对象中将其丢弃。 JPA 规范为这些瞬态字段提供了`@Transient`注解。 `@Transient`注解没有任何属性-您只需将其添加到实例变量或适合实体 bean 的属性访问策略的设置器方法中即可。
某些字段(例如,计算值)只能在运行时使用,并且应将它们保留在数据库中,并从对象中将其丢弃。 JPA 规范为这些瞬态字段提供了`@Transient`注解。 `@Transient`注解没有任何属性 - 您只需将其添加到实例变量或适合实体 bean 的属性访问策略的设置器方法中即可。
`@Transient`注解突出显示了在 Hibernate 中使用注解和使用 XML 映射文档之间的重要区别之一。 使用注解,Hibernate 将默认保留所有字段在映射对象上的持久化。 使用 XML 映射文档时,Hibernate 要求您明确告诉它哪些字段将被保留。
......
......@@ -15,15 +15,15 @@ Building AngularJS HelloWorld application
## 为什么选择 AngularJS?
最初建立网站时,它们纯粹是在完整的请求-响应模型上工作。 流程就像–首先在浏览器中呈现了一个网页–然后用户在网页中进行了任何互动,例如 表单提交或单击按钮–将向服务器发送新请求,然后从服务器返回整个新页面以在浏览器中呈现响应。
最初建立网站时,它们纯粹是在完整的请求 - 响应模型上工作。 流程就像–首先在浏览器中呈现了一个网页–然后用户在网页中进行了任何互动,例如 表单提交或单击按钮–将向服务器发送新请求,然后从服务器返回整个新页面以在浏览器中呈现响应。
在 Microsoft 引入[`XMLHttpRequest`](//howtodoinjava.com/2013/06/21/complete-ajax-tutorial/)之前,一直使用该模型,这使开发人员无需实际刷新页面即可对服务器进行**异步**调用,并使用服务器响应来部分刷新页面。 这使用户体验更加连贯,因为用户可以执行需要远程调用的任务,并且在进行和处理呼叫时仍可以与应用进行交互。
仅在此时间段内,大多数 JS 框架(如 jQuery,原型等)才出现。jQuery 是该列表中最引人注目的框架–可能仍然是 UI 开发的最佳和最简单的选择。
如果您从事过在 UI 组件中使用 jQuery 的相当大的项目,那么您可以在一段时间内轻松地将其关联起来-代码维护变得有些麻烦。 一段时间后,您的项目中将有 100 多个 JS 文件,甚至更多–所有这些文件都是相互引用的,而无需执行设计。 jQuery 确实是使编码变得容易的绝佳框架,但是它缺乏任何可以在代码库增长时为我们提供帮助的结构性指导。 因此,我们最终得到了难以维护和测试的意大利面条代码。
如果您从事过在 UI 组件中使用 jQuery 的相当大的项目,那么您可以在一段时间内轻松地将其关联起来 - 代码维护变得有些麻烦。 一段时间后,您的项目中将有 100 多个 JS 文件,甚至更多–所有这些文件都是相互引用的,而无需执行设计。 jQuery 确实是使编码变得容易的绝佳框架,但是它缺乏任何可以在代码库增长时为我们提供帮助的结构性指导。 因此,我们最终得到了难以维护和测试的意大利面条代码。
这是诸如[模型视图控制器(MVC)](//howtodoinjava.com/scripting/implement-mvc-and-pubsub-in-javascript/)之类的架构模式和诸如 AngularJS 之类的框架出现的地方。 Google 的 AngularJS 是一个全面的 JavaScript 模型-视图-控制器(MVC)框架,可让您轻松轻松地快速构建可在任何台式机或移动平台上正常运行的应用。 AngularJS 完全支持单元测试,以帮助减少质量保证(QA)时间。
这是诸如[模型视图控制器(MVC)](//howtodoinjava.com/scripting/implement-mvc-and-pubsub-in-javascript/)之类的架构模式和诸如 AngularJS 之类的框架出现的地方。 Google 的 AngularJS 是一个全面的 JavaScript 模型 - 视图 - 控制器(MVC)框架,可让您轻松轻松地快速构建可在任何台式机或移动平台上正常运行的应用。 AngularJS 完全支持单元测试,以帮助减少质量保证(QA)时间。
AngularJS 中的模型和视图比大多数 JavaScript 客户端框架中的模型和视图简单得多。 在其他 JavaScript 客户端框架中经常缺少的控制器是 AngularJS 中的关键功能组件。
......
......@@ -9,7 +9,7 @@
1. 全局范围
2. 功能范围
只需记住,当您使用`var`关键字定义变量时,就声明了 JavaScript 中的作用域。 让我们从简单的一个开始-Java 中的全局范围变量。
只需记住,当您使用`var`关键字定义变量时,就声明了 JavaScript 中的作用域。 让我们从简单的一个开始 -Java 中的全局范围变量。
## 全局范围
......@@ -30,7 +30,7 @@ console.log(foo); //I am GLOBAL foo
```
#### 在任何函数中定义的变量-无需使用“ var”关键字
#### 在任何函数中定义的变量 - 无需使用“ var”关键字
```java
//'foo' is function local variable
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/javascript/implement-mvc-and-pubsub-in-javascript/](https://howtodoinjava.com/javascript/implement-mvc-and-pubsub-in-javascript/)
我们知道什么是 MVC? MVC 代表 [**模型-视图-控制器**](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller "MVC") 。 简而言之,MVC 是一种设计技术,其中将应用组件分为 3 组,以便可以独立开发它们而无需考虑它们将如何交互。 如果构建正确,则很少有配置代码可以绑定它们,并且可以立即使用。
我们知道什么是 MVC? MVC 代表 [**模型 - 视图 - 控制器**](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller "MVC") 。 简而言之,MVC 是一种设计技术,其中将应用组件分为 3 组,以便可以独立开发它们而无需考虑它们将如何交互。 如果构建正确,则很少有配置代码可以绑定它们,并且可以立即使用。
[**PubSub(发布者订阅者)**](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern "pubsub") 模型是设计范式,其中多个订阅者正在监听源上的更改事件,并且一旦发生任何更改,便会立即通知监听器。 在用户交互影响屏幕上多个部分的大型系统中,此模式消除了许多硬编码,并提供了设计灵活性。
......
......@@ -29,7 +29,7 @@ document.getElementById("label_firstname").innerHTML = "First Name";
## 什么是 jQuery 对象?
jQuery 对象是围绕单个或多个 DOM 元素的包对象。 jQuery 对象(尽管从技术上讲还是 JavaScript 对象)提供对包的 DOM 元素的访问-但是,这是一种非常不同,更容易且通常更有效的方式。
jQuery 对象是围绕单个或多个 DOM 元素的包对象。 jQuery 对象(尽管从技术上讲还是 JavaScript 对象)提供对包的 DOM 元素的访问 - 但是,这是一种非常不同,更容易且通常更有效的方式。
Remember that a jQuery object may represent a single DOM object, or it may represent a set of many DOM objects. So if you apply an operation on the jQuery object, it may apply to many DOM objects.
......
......@@ -139,7 +139,7 @@ MathUtils.prototype.factorial = function(number) {
#### 2.1 后
Jasmine 套件是一组测试用例,可用于测试 JavaScript 代码(JavaScript 对象或函数)的特定行为。 首先使用两个参数调用 Jasmine 全局函数`describe`-第一个参数代表测试套件的标题,第二个参数代表实现测试套件的功能。
Jasmine 套件是一组测试用例,可用于测试 JavaScript 代码(JavaScript 对象或函数)的特定行为。 首先使用两个参数调用 Jasmine 全局函数`describe`- 第一个参数代表测试套件的标题,第二个参数代表实现测试套件的功能。
```java
//This is test suite
......@@ -151,7 +151,7 @@ describe("Test Suite", function() {
#### 2.2 规范
Jasmine 规范表示测试套件中的一个测试用例。 首先使用两个参数调用 Jasmine 全局函数`it`-第一个参数代表规范的标题,第二个参数代表实现测试用例的函数。
Jasmine 规范表示测试套件中的一个测试用例。 首先使用两个参数调用 Jasmine 全局函数`it`- 第一个参数代表规范的标题,第二个参数代表实现测试用例的函数。
实际上,规范包含一个或多个期望。 每个期望代表一个可以为`true``false`的断言。 为了通过规范,规范内的所有期望都必须为`true`。 如果规范中的一个或多个期望是`false`,则规范失败。
......@@ -314,7 +314,7 @@ expect(actual).not.toBeDefined(expected);
## 6\. 禁用套件和规范
很多时候,出于各种原因,您可能需要禁用套件-一段时间。 在这种情况下,您无需删除代码-只需在`describe`的开头添加 char `x`以使 if 为`xdescribe`
很多时候,出于各种原因,您可能需要禁用套件 - 一段时间。 在这种情况下,您无需删除代码 - 只需在`describe`的开头添加 char `x`以使 if 为`xdescribe`
这些套件及其内部的任何规范在运行时都会被跳过,因此其结果将不会出现在结果中。
......@@ -371,7 +371,7 @@ describe("MathUtils", function() {
上面的示例本质上是最基本的,您也可以使用间谍来验证对内部方法的调用。 例如。 如果在任何对象上调用方法`calculateInterest()`,则可能需要检查是否必须在该对象内调用`getPrincipal()``getROI()``getTime()`。 间谍将帮助您验证这些假设。
当没有要监视的功能时,`jasmine.createSpy`可以创建裸露的间谍。 该间谍的行为与其他任何间谍一样-跟踪调用,参数等。但是它背后没有实现。 间谍是 JavaScript 对象,可以这样使用。 通常,这些间谍在需要时用作其他函数的回调函数。
当没有要监视的功能时,`jasmine.createSpy`可以创建裸露的间谍。 该间谍的行为与其他任何间谍一样 - 跟踪调用,参数等。但是它背后没有实现。 间谍是 JavaScript 对象,可以这样使用。 通常,这些间谍在需要时用作其他函数的回调函数。
```java
var callback = jasmine.createSpy('callback');
......
......@@ -111,7 +111,7 @@ Android running app
请注意,您必须解锁设备或仿真器才能真正看到该应用在运行-它不会自动为您解锁。
请注意,您必须解锁设备或仿真器才能真正看到该应用在运行 - 它不会自动为您解锁。
在下一个教程中,我将详细讨论创建的项目中的内容。
......
......@@ -32,7 +32,7 @@ You should not modify `R.java` yourself, letting the Android tools handle it for
## 3)Android 应用资源
您还将发现您的项目具有 res /目录树。 它包含“资源”-与您的应用打包在一起的静态文件,它们可以是原始形式,也可以是预处理形式。 在 res /下可以找到或创建的一些子目录包括:
您还将发现您的项目具有 res /目录树。 它包含“资源”- 与您的应用打包在一起的静态文件,它们可以是原始形式,也可以是预处理形式。 在 res /下可以找到或创建的一些子目录包括:
1. **res / drawable /** 用于图像(PNG,JPEG 等)
2. **res / layout /** 用于基于 XML 的 UI 布局规范
......@@ -41,7 +41,7 @@ You should not modify `R.java` yourself, letting the Android tools handle it for
5. **res / values /** 用于字符串,尺寸和类似内容
6. **res / xml /** 用于您希望随应用一起提供的其他通用 XML 文件
一些目录名称可能带有后缀,例如 **res / drawable-hdpi /** 。 这表明资源目录仅应在某些情况下使用-在这种情况下,可绘制资源应仅在具有**高密度屏幕**的设备上使用。
一些目录名称可能带有后缀,例如 **res / drawable-hdpi /** 。 这表明资源目录仅应在某些情况下使用 - 在这种情况下,可绘制资源应仅在具有**高密度屏幕**的设备上使用。
在我们的初始项目中,您将找到以下文件:
......@@ -68,7 +68,7 @@ Android bin folder content
.apk 文件是一个 ZIP 存档,其中包含.dex 文件,资源的编译版本,任何未编译的资源(例如,放入 res / raw /的资源)和`AndroidManifest.xml`文件。
如果您构建应用的调试版本-您将`DemoApp-debug.apk``DemoApp-debug-aligned.apk`作为 APK 的两个版本。 后者已使用 [zipalign 工具](https://developer.android.com/tools/help/zipalign.html "zipalign")进行了优化,以使其运行更快。
如果您构建应用的调试版本 - 您将`DemoApp-debug.apk``DemoApp-debug-aligned.apk`作为 APK 的两个版本。 后者已使用 [zipalign 工具](https://developer.android.com/tools/help/zipalign.html "zipalign")进行了优化,以使其运行更快。
这就是这篇小介绍性文章的全部内容,讨论了默认情况下每个 android 应用创建的各种文件和文件夹。 我们将在以后的教程中根据需要更深入地讨论它们。
......
......@@ -4,7 +4,7 @@
在上一教程中,我们通过讨论默认情况下使用 Android 应用创建的 [**项目结构,文件和文件夹**](//howtodoinjava.com/android/android-tutorial-android-project-structure-files-and-resources/ "Android Tutorial : Android Project Structure, Files and Resources") ,开始建立 android 知识库的基础。 让我们花更多的时间来理解一些我认为您必须事先知道的基本知识。
任何 Android 应用的基础都是项目根目录中的清单文件 **AndroidManifest.xml** 。 在这里,您可以声明应用内部的内容-活动,服务等。 您还将指出这些部分如何将它们附加到整个 Android 系统上; 例如,您指出哪些活动应显示在设备的主菜单(即启动器)上。
任何 Android 应用的基础都是项目根目录中的清单文件 **AndroidManifest.xml** 。 在这里,您可以声明应用内部的内容 - 活动,服务等。 您还将指出这些部分如何将它们附加到整个 Android 系统上; 例如,您指出哪些活动应显示在设备的主菜单(即启动器)上。
在 AndroidManifest.xml 文件中,您将声明各种版本属性,您将在本简短教程中学习这些属性。
......
......@@ -49,15 +49,15 @@ Java Cloud Development Tools
4. #### 快速弹性
资源是根据触发器或参数按需配置和/或自动分配和释放的。 这将确保您的应用在任何时间点都具有所需的容量。 例如 在为您的应用提供最高负载时,云将为您分配资源来处理所有任务-但是当负载较低时,这些资源将为其他一些客户端提供服务。
资源是根据触发器或参数按需配置和/或自动分配和释放的。 这将确保您的应用在任何时间点都具有所需的容量。 例如 在为您的应用提供最高负载时,云将为您分配资源来处理所有任务 - 但是当负载较低时,这些资源将为其他一些客户端提供服务。
5. #### 实测服务
根据使用情况透明地监视,测量和报告(计费)资源使用情况。 如果您已经使用或知道亚马逊云基础架构,那么它会为您提供数百种服务-但是您只需要为每月使用的服务和消耗的资源付费。 用简单的英语来说,是**按使用付费**。
根据使用情况透明地监视,测量和报告(计费)资源使用情况。 如果您已经使用或知道亚马逊云基础架构,那么它会为您提供数百种服务 - 但是您只需要为每月使用的服务和消耗的资源付费。 用简单的英语来说,是**按使用付费**。
## 云计算的优势
今天,如果您在 Facebook 上发布身份,预订机票或通过移动设备转帐资金,则很有可能正在使用后端云提供的某些服务。 越来越多的组织以非常快的速度向云迁移,为什么呢? 这是因为云计算可以提高效率,帮助改善现金流并提供更多好处-同时有效解决小型企业每天面临的一些最复杂的问题。 让我们列出一些好处,云提供:
今天,如果您在 Facebook 上发布身份,预订机票或通过移动设备转帐资金,则很有可能正在使用后端云提供的某些服务。 越来越多的组织以非常快的速度向云迁移,为什么呢? 这是因为云计算可以提高效率,帮助改善现金流并提供更多好处 - 同时有效解决小型企业每天面临的一些最复杂的问题。 让我们列出一些好处,云提供:
* **高可用性**:大多数云提供商在提供服务方面都非常可靠,其中许多维护正常运行时间为 99.99% 。 连接始终处于打开状态,这意味着您的应用始终处于运行状态。
* **可扩展性和性能**:迁移到云使所有人都能使用企业级技术。 它还允许小型企业比大型,成熟的竞争对手采取行动更快。 随用随付服务和云业务应用意味着小型公司可以与大型公司一起运行,扰乱市场,同时保持精简和灵活。
......@@ -100,7 +100,7 @@ PaaS 供应商为应用开发人员提供了开发环境。 在 PaaS 模型中
当通过开放供公众使用的网络提供服务时,云被称为“公共云”。 通常,诸如 Amazon AWS,Microsoft 和 Google 之类的公共云服务提供商在其数据中心拥有并运营基础架构,并且通常通过 Internet 进行访问。
资源使用可以是收费的还是免费的-取决于提供给供应器的服务和基于服务的服务。
资源使用可以是收费的还是免费的 - 取决于提供给供应器的服务和基于服务的服务。
#### 私有云
......@@ -162,7 +162,7 @@ PaaS 供应商为应用开发人员提供了开发环境。 在 PaaS 模型中
Heroku 是基于托管容器系统的云平台即服务(PaaS)平台,具有集成的数据服务和强大的生态系统,用于部署和运行现代应用。 Heroku 开发人员的经验是一种以应用为中心的软件交付方法,并与当今最流行的开发人员工具和工作流集成在一起。
Heroku 支持多种编程语言,例如 Java,Node.js,Scala,Clojure,Python,PHP 和 Go。 [Heroku](https://www.heroku.com/) 使在云中轻松部署和扩展 Java 应用变得容易。 无论您是喜欢将标准库与 Tomcat 或 Jetty 之类的应用服务器一起使用,还是与 Spring 或 Play 之类的框架一起使用,Heroku 都不会妨碍您-允许您使用自己喜欢的工具构建自己的东西。
Heroku 支持多种编程语言,例如 Java,Node.js,Scala,Clojure,Python,PHP 和 Go。 [Heroku](https://www.heroku.com/) 使在云中轻松部署和扩展 Java 应用变得容易。 无论您是喜欢将标准库与 Tomcat 或 Jetty 之类的应用服务器一起使用,还是与 Spring 或 Play 之类的框架一起使用,Heroku 都不会妨碍您 - 允许您使用自己喜欢的工具构建自己的东西。
6. #### Jelastic
......
......@@ -63,7 +63,7 @@ Monolithic vs MicroServices Architecture
5. #### 失败的设计
微服务的设计应考虑到故障情况。 如果服务失败或停顿了一段时间该怎么办。 这些是非常重要的问题,必须在实际编码开始之前解决-清楚地估计**服务故障将如何影响用户体验**。
微服务的设计应考虑到故障情况。 如果服务失败或停顿了一段时间该怎么办。 这些是非常重要的问题,必须在实际编码开始之前解决 - 清楚地估计**服务故障将如何影响用户体验**。
快速故障是用于构建容错,弹性系统的另一个概念。 这种哲学提倡的系统应该是失败的,而不是构建永远不会失败的系统。 由于服务随时可能发生故障,因此重要的是能够迅速检测到故障,并在可能的情况下自动恢复服务。
......
......@@ -10,7 +10,7 @@
* **Zookeeper** (用于存储有关 Kafka 群集的元数据)也是必需的。 Kafka 首先内置了 Zookeeper。 但是建议在生产环境中单独安装 Zookeeper。 从其[官方网站](https://zookeeper.apache.org/releases.html)下载它。
* Kafka 可以在任何操作系统上运行。 推荐使用 linux 操作系统。 使用 Windows,Kafka 有一些已知的错误。
> 本教程适用于初学者,并且不使用单独的 zookeeper 实例-保持简单,仅专注于 Kafka。
> 本教程适用于初学者,并且不使用单独的 zookeeper 实例 - 保持简单,仅专注于 Kafka。
## 2\. 下载并安装 Kafka
......
......@@ -181,7 +181,7 @@ Dropwizard 的嵌入式 Jetty 服务器将默认尝试绑定到端口 **8080**
## 创建 REST 资源和 API
现在,当您添加了应用引导类后,现在可以添加包含 REST API 的 REST 资源。 在此示例中,我创建并创建了员工管理应用-因此它具有用于创建/更新/删除员工记录的 API。 此类将负责处理 HTTP 请求并生成 JSON 响应。
现在,当您添加了应用引导类后,现在可以添加包含 REST API 的 REST 资源。 在此示例中,我创建并创建了员工管理应用 - 因此它具有用于创建/更新/删除员工记录的 API。 此类将负责处理 HTTP 请求并生成 JSON 响应。
由于类路径中包含 Jersey,因此我们将使用它来构建 REST API。
......
......@@ -6,7 +6,7 @@
## 实现 Dropwizard 运行状况检查
DropWizard 运行状况检查是通过扩展`HealthCheck`类并在一切正常的情况下返回`Result.healthy()`以及在某些情况下无效的情况下返回`Result.unhealthy()`来实现的-符合预期。
DropWizard 运行状况检查是通过扩展`HealthCheck`类并在一切正常的情况下返回`Result.healthy()`以及在某些情况下无效的情况下返回`Result.unhealthy()`来实现的 - 符合预期。
#### 运行状况检查配置
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/resteasy/writing-restful-webservices-with-hateoas-using-jax-rs-and-jaxb-in-java/](https://howtodoinjava.com/resteasy/writing-restful-webservices-with-hateoas-using-jax-rs-and-jaxb-in-java/)
代表性状态转移( [REST](https://restfulapi.net) )是一种设计习语,它使用 Web 的无状态客户端-服务器架构将 REST Web 服务表示为 URL 标识的资源。 REST 风格的架构由客户端和服务器组成。 客户端向服务器发起请求; 服务器处理请求并返回适当的响应。 请求和响应围绕“资源”的“表示”的传递而构建。 资源可以是可以解决的任何连贯且有意义的概念。 资源的表示形式通常是捕获资源当前或预期状态的文档。
代表性状态转移( [REST](https://restfulapi.net) )是一种设计习语,它使用 Web 的无状态客户端 - 服务器架构将 REST Web 服务表示为 URL 标识的资源。 REST 风格的架构由客户端和服务器组成。 客户端向服务器发起请求; 服务器处理请求并返回适当的响应。 请求和响应围绕“资源”的“表示”的传递而构建。 资源可以是可以解决的任何连贯且有意义的概念。 资源的表示形式通常是捕获资源当前或预期状态的文档。
> 来源: [http://en.wikipedia.org/wiki/Representational_State_Transfer](https://en.wikipedia.org/wiki/Representational_State_Transfer) 。
......@@ -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`操作。
......
# 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/)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册