提交 4b6970fd 编写于 作者: W wizardforcel

2020-06-03 19:59:05

上级 5d3c11e3
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/jersey/jersey-rest-client-authentication/](https://howtodoinjava.com/jersey/jersey-rest-client-authentication/)
了解如何使用 [HttpAuthenticationFeature](https://github.com/jersey/jersey/blob/master/core-client/src/main/java/org/glassfish/jersey/client/authentication/HttpAuthenticationFeature.java) 构建**Jersey 休息客户端**,该客户端可用于访问认证/授权安全性后面的 REST API。 例如,我们将为在 [Jersey Secured REST API 教程](//howtodoinjava.com/jersey/jersey-rest-security/)中保护的服务创建 **jersey 客户端**; 并且我将扩展为 [**Jersey RESTful 客户端示例**](//howtodoinjava.com/jersey/jersey-restful-client-examples/) 创建的源代码。
了解如何使用[`HttpAuthenticationFeature`](https://github.com/jersey/jersey/blob/master/core-client/src/main/java/org/glassfish/jersey/client/authentication/HttpAuthenticationFeature.java)构建**Jersey REST 客户端**,该客户端可用于访问认证/授权安全性后面的 REST API。 例如,我们将为在 [Jersey Secured REST API 教程](//howtodoinjava.com/jersey/jersey-rest-security/)中保护的服务创建 **jersey 客户端**; 并且我将扩展为 [**Jersey RESTful 客户端示例**](//howtodoinjava.com/jersey/jersey-restful-client-examples/)创建的源代码。
```java
Table of Contents
......@@ -12,14 +12,14 @@ Table of Contents
3\. Jersey REST Client Code
```
## 1\. Jersey 客户端– HttpAuthenticationFeature
## 1\. Jersey 客户端 – `HttpAuthenticationFeature`
`HttpAuthenticationFeature`类提供 HttpBasic 和 Digest 客户端认证功能。 该功能以 4 种模式之一工作,即 BASIC,BASIC NON-PREEMPTIVE,DIGEST 和 UNIVERSAL。 让我们快速了解它们。
`HttpAuthenticationFeature`类提供 HttpBasic 和 Digest 客户端认证功能。 该功能以 4 种模式之一工作,即`BASIC``BASIC NON-PREEMPTIVE``DIGEST``UNIVERSAL`。 让我们快速了解它们。
1. **基本** –一种抢占式认证方式,即信息始终与每个 HTTP 请求一起发送。 此模式必须与 SSL / TLS 结合使用,因为密码仅以 BASE64 编码发送。
2. **基本非优先**一种非优先的认证方式,即仅当服务器拒绝带有 401 状态码的请求后再添加认证信息,才添加认证信息。
3. **DIGEST** – HTTP 摘要认证。 不需要使用 SSL / TLS。
4. **UNIVERSAL** –非抢占模式下基本认证和摘要认证的组合,即在 401 响应的情况下,将根据 WWW-Authenticate HTTP 标头中定义的请求认证使用适当的认证。
1. **`BASIC`** – 一种抢占式认证方式,即信息始终与每个 HTTP 请求一起发送。 此模式必须与 SSL/TLS 结合使用,因为密码仅以 BASE64 编码发送。
2. **`BASIC NON-PREEMPTIVE`**一种非优先的认证方式,即仅当服务器拒绝带有 401 状态码的请求后再添加认证信息,才添加认证信息。
3. **`DIGEST`** – HTTP 摘要认证。 不需要使用 SSL/TLS。
4. **`UNIVERSAL`** – 非抢占模式下基本认证和摘要认证的组合,即在 401 响应的情况下,将根据`WWW-Authenticate` HTTP 标头中定义的请求认证使用适当的认证。
要使用`HttpAuthenticationFeature`,请构建一个实例并向客户端注册。
......@@ -63,7 +63,7 @@ client.register(feature);
## 2\. 如何保护 REST API
对于启用认证的其余 api,请使用与角色相关的注释,例如`@RolesAllowed`。 例如,这是安全的 REST API 的代码。
对于启用认证的 REST api,请使用与角色相关的注释,例如`@RolesAllowed`。 例如,这是安全的 REST API 的代码。
```java
@Path("/employees")
......@@ -92,7 +92,7 @@ public class JerseyService
## 3\. Jersey REST 客户端代码
以下是**Jersey 休息客户端基本认证**示例,该示例接受用于认证的用户名和密码详细信息。
以下是 **Jersey REST 客户端基本认证**示例,该示例接受用于认证的用户名和密码详细信息。
```java
public static void main(String[] args) throws IOException
......@@ -128,7 +128,7 @@ private static void httpGETCollectionExample()
```
#### 3.1 使用正确的用户名/密码输出
#### 3.1 正确的用户名/密码的输出
```java
200
......@@ -137,7 +137,7 @@ OK
```
#### 3.2 使用不正确的用户名/密码输出
#### 3.2 不正确的用户名/密码的输出
```java
401
......@@ -145,6 +145,6 @@ Unauthorized
```
将您的查询放在评论部分。
将您的问题放在评论部分。
学习愉快!
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/jersey/jersey-client-cookie-example/](https://howtodoinjava.com/jersey/jersey-client-cookie-example/)
在本示例中,我们将学习**将 cookie 设置为 Jersey 客户端**调用的 HTTP 请求。 本示例利用`Invocation.Builder`将 Cookie 设置为外发 REST 调用。
在本示例中,我们将学习**在 Jersey 客户端发起的 HTTP 请求中设置 cookie**。 本示例利用`Invocation.Builder`将 Cookie 设置为外发 REST 调用。
## 设置 Cookie 示例
......@@ -23,7 +23,7 @@ Employees employees = response.readEntity(Employees.class);
```
## 其余 API 代码
## REST API 代码
我在下面编写了 REST API 进行测试。
......
......@@ -4,45 +4,52 @@
Java 数据库连接(JDBC)API 提供了来自 Java 的通用数据访问。 使用 JDBC API,您几乎可以访问任何数据源,从关系数据库到电子表格和平面文件。
JDBC API 由两个软件包组成:
JDBC API 由两个包组成:
* [java.sql](https://docs.oracle.com/javase/7/docs/api/java/sql/package-summary.html)
* [javax.sql](https://docs.oracle.com/javase/7/docs/api/javax/sql/package-summary.html)
* [`java.sql`](https://docs.oracle.com/javase/7/docs/api/java/sql/package-summary.html)
* [`javax.sql`](https://docs.oracle.com/javase/7/docs/api/javax/sql/package-summary.html)
这两个软件包都是通过 Java Platform Standard Edition(Java SE)下载的。
这两个包都是通过 Java 平台标准版(Java SE)下载的。
## JDBC 基础
* [JDBC 驱动程序的类型](//howtodoinjava.com/java/jdbc/jdbc-basics-types-of-jdbc-drivers/)
了解所有 4 种类型的 JBDC 驱动程序。
* [JDBC MySQL 数据库连接示例](//howtodoinjava.com/java/jdbc/jdbc-mysql-database-connection-example/)
了解如何使用 JDBC 连接到 mysql 数据库。
## JDBC CRUD 示例
* [JDBC SELECT 查询示例](//howtodoinjava.com/java/jdbc/jdbc-select-query-example/)
通过 JDBC 使用 SQL SELECT 查询的示例。
* [JDBC SQL INSERT 查询示例](//howtodoinjava.com/java/jdbc/jdbc-sql-insert-query-example/)
通过 JDBC 使用 SQL INSERT 查询的示例。
* [JDBC SQL DELETE 查询示例](//howtodoinjava.com/java/jdbc/jdbc-sql-delete-query-example/)
使用 JDBC 使用 SQL DELETE 查询的示例。
* [JDBC `SELECT`查询示例](//howtodoinjava.com/java/jdbc/jdbc-select-query-example/)
通过 JDBC 使用 SQL `SELECT`查询的示例。
* [JDBC SQL `INSERT`查询示例](//howtodoinjava.com/java/jdbc/jdbc-sql-insert-query-example/)
通过 JDBC 使用 SQL `INSERT`查询的示例。
* [JDBC SQL `DELETE`查询示例](//howtodoinjava.com/java/jdbc/jdbc-sql-delete-query-example/)
使用 JDBC 使用 SQL `DELETE`查询的示例。
## JDBC PreparedStatement
## JDBC `PreparedStatement`
* [如何执行 PreparedStatement](//howtodoinjava.com/java/jdbc/how-to-execute-preparedstatement-using-jdbc/)
了解 JDBC PreparedStatement 的工作方式并研究示例。
* [如何执行`PreparedStatement`](//howtodoinjava.com/java/jdbc/how-to-execute-preparedstatement-using-jdbc/)
了解 JDBC `PreparedStatement`的工作方式并研究示例。
## JDBC 最佳实践
* [JDBC 性能优化技巧](//howtodoinjava.com/java/jdbc/best-practices-to-improve-jdbc-performance/)
了解 4 种最有用的 JDBC 最佳实践,以提高应用性能。
## 相关的 SQL 教程
* [MySQL 配置教程](//howtodoinjava.com/misc/sql/mysql-configuration-tutorial/)
* [SQL 查询以查找员工](//howtodoinjava.com/misc/sql/sql-query-to-find-find-the-nth-highest-salary-of-an-employee/)的最高薪水
* [SQL –删除没有临时表的重复行](//howtodoinjava.com/misc/sql/how-to-remove-duplicate-rows-in-mysql-without-using-temporary-table/)
* [SQLException:重新安装 MySQL 服务器](//howtodoinjava.com/misc/sql/sqlexception-access-denied-for-user-rootlocalhost-after-re-installation-of-mysql-server/)后,用户'root'@'localhost'的访问被拒绝
* [查找员工最高薪水的 SQL 查询](//howtodoinjava.com/misc/sql/sql-query-to-find-find-the-nth-highest-salary-of-an-employee/)
* [SQL – 不使用临时表删除重复行](//howtodoinjava.com/misc/sql/how-to-remove-duplicate-rows-in-mysql-without-using-temporary-table/)
* [`SQLException`:重新安装 MySQL 服务器后,用户`root@localhost`的访问被拒绝](//howtodoinjava.com/misc/sql/sqlexception-access-denied-for-user-rootlocalhost-after-re-installation-of-mysql-server/)
## JDBC 资源
......
......@@ -170,7 +170,7 @@ public class JUnit5TestSuiteExample
此外,您可以使用以下注释来过滤测试包,类甚至测试方法。
1. `@IncludePackages``@ExcludePackages`过滤软件
1. `@IncludePackages``@ExcludePackages`过滤包
2. `@IncludeClassNamePatterns``@ExcludeClassNamePatterns`过滤测试类别
3. `@IncludeTags``@ExcludeTags`过滤测试方法
......
......@@ -275,6 +275,6 @@ E:\devsetup\workspacetemp\HelloWorldApp>mvn clean install
```
构建会生成名称为`HelloWorldApp-ear-1.0-SNAPSHOT.ear`的 ear 文件。 可以根据需要随意更改项目名称和生成的软件包。
构建会生成名称为`HelloWorldApp-ear-1.0-SNAPSHOT.ear`的 ear 文件。 可以根据需要随意更改项目名称和生成的包。
学习愉快!
\ No newline at end of file
......@@ -270,7 +270,7 @@ E:\devsetup\workspacetemp\HelloWorldApp>mvn clean install
```
构建会生成名称为`ear-0.0.1-SNAPSHOT.ear`的 ear 文件。 可以根据需要随意更改项目名称和生成的软件包。
构建会生成名称为`ear-0.0.1-SNAPSHOT.ear`的 ear 文件。 可以根据需要随意更改项目名称和生成的包。
## 2\. 常见问题
......
......@@ -29,7 +29,7 @@ JUnit 5 Test Suite Project Structure
## 2\. 使用@SelectPackages 创建测试套件
`@SelectPackages`指定通过`@RunWith(JUnitPlatform.class)`运行测试套件时要选择的软件包的名称。
`@SelectPackages`指定通过`@RunWith(JUnitPlatform.class)`运行测试套件时要选择的包的名称。
#### 指定单个包
......@@ -115,7 +115,7 @@ public class JUnit5TestSuiteExample
## 4\. @IncludePackages 和@ExcludePackages
我们了解到`@SelectPackages`也会导致其所有子包都被扫描以查找测试类别。 如果要排除任何特定的子软件包,或包括任何软件包,则可以使用 [@IncludePackages](http://junit.org/junit5/docs/current/api/org/junit/platform/suite/api/IncludePackages.html)[@ExcludePackages](http://junit.org/junit5/docs/current/api/org/junit/platform/suite/api/ExcludePackages.html) 注解。
我们了解到`@SelectPackages`也会导致其所有子包都被扫描以查找测试类别。 如果要排除任何特定的子包,或包括任何包,则可以使用 [@IncludePackages](http://junit.org/junit5/docs/current/api/org/junit/platform/suite/api/IncludePackages.html)[@ExcludePackages](http://junit.org/junit5/docs/current/api/org/junit/platform/suite/api/ExcludePackages.html) 注解。
#### @IncludePackages 示例
......@@ -147,7 +147,7 @@ public class JUnit5TestSuiteExample
## 5\. @IncludeClassNamePatterns 和@ExcludeClassNamePatterns
很多时候,在选择注释中包含所有包或测试类名称是不可行的。 在这种情况下,您可能会提供更广泛的软件包范围,并通过 appy 筛选将哪些测试类包括在套件中或从套件中排除。
很多时候,在选择注释中包含所有包或测试类名称是不可行的。 在这种情况下,您可能会提供更广泛的包范围,并通过 appy 筛选将哪些测试类包括在套件中或从套件中排除。
要指定要排除或包含的测试类名称模式,可以使用 [@IncludeClassNamePatterns](http://junit.org/junit5/docs/current/api/org/junit/platform/suite/api/IncludeClassNamePatterns.html)[@ExcludeClassNamePatterns](http://junit.org/junit5/docs/current/api/org/junit/platform/suite/api/ExcludeClassNamePatterns.html) 注解。
......@@ -201,7 +201,7 @@ public class JUnit5TestSuiteExample
#### @ExcludeTags 示例
此测试套件将排除软件包`com.howtodoinjava.junit5.examples`(及其子软件包)中所有带有`development`标签的测试。
此测试套件将排除`com.howtodoinjava.junit5.examples`(及其子包)中所有带有`development`标签的测试。
```java
@RunWith(JUnitPlatform.class)
......
......@@ -143,7 +143,7 @@ TestNG Jar – [http://testng.org/testng-6.8.zip](http://testng.org/testng-6.8.z
![select the Java project](img/8f7db07862c937efbc89ddf1b9f79e29.png)
4)**输入软件包名称和测试类别名称**,然后单击 Finish。
4)**输入包名称和测试类别名称**,然后单击 Finish。
![Enter the package name](img/22b540eb7910fa9e5d5882741b4044f0.png)
......@@ -191,7 +191,7 @@ public class MyFirstTest {
* **类**:使用此选项,您可以提供类名称和程序包,以仅运行所述特定测试类。
* 方法:使用此方法,您只能在测试类中运行特定的方法。
* **组**:如果您想运行属于特定 TestNG 组的特定测试方法,则可以在此处输入用于执行它们的方法。
* **软件包**:如果要在软件包中执行所有测试,则可以在此框中指定这些测试。
* **包**:如果要在包中执行所有测试,则可以在此框中指定这些测试。
* **套件**:如果您具有`testing.xml`文件形式的套件文件,则可以在此处选择要执行的文件。
让我们输入配置名称`TestNGRunConfig`,然后在“类”部分下选择新创建的类,然后单击“应用”。
......
......@@ -16,7 +16,7 @@ Table Of Contents
5\. Configure a testcase to run in multiple threads
```
## 1\. 并行休息执行的优点
## 1\. 并行执行测试的优点
并行或多线程执行可以为用户提供很多优势。 以下是两个:
......
......@@ -38,7 +38,7 @@ TypeScript vs JavaScript
默认情况下,当前版本的编译器支持 ES 5。 TypeScript 可以将源代码编译为任何模块模式-[`AMD`](https://en.wikipedia.org/wiki/Asynchronous_module_definition)[`CommonJS`](https://en.wikipedia.org/wiki/CommonJS)`ES 6``SystemJS`等。
与任何`npm`软件包一样,您可以在本地或全局安装它,或同时在这两者中安装,并通过在命令行上运行`tsc`来编译 TS 文件。
与任何`npm`包一样,您可以在本地或全局安装它,或同时在这两者中安装,并通过在命令行上运行`tsc`来编译 TS 文件。
```java
$ tsc helloworld.ts //It compile the file into helloworld.js
......
......@@ -49,7 +49,7 @@ $ git config --global user.name "Your Name" //Use your git name
## 安装套件
现在,在安装了 node 和 git 之后,该安装必要的`npm`软件包了。
现在,在安装了 node 和 git 之后,该安装必要的`npm`包了。
```java
$ npm install -g rxjs
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/angular/npm-install-hung/](https://howtodoinjava.com/angular/npm-install-hung/)
在使用 Node 时,您可能正在下载各种`npm`软件包。 有时下载过程只是挂起而无法继续进行。 您可能还会看到与不可访问的`registry.npmjs.org` URL 相关的错误。
在使用 Node 时,您可能正在下载各种`npm`包。 有时下载过程只是挂起而无法继续进行。 您可能还会看到与不可访问的`registry.npmjs.org` URL 相关的错误。
## 错误
......
......@@ -68,15 +68,15 @@ android 中的资源指的是**图像,字符串以及应用在运行时**上
通常,您将以以下方式设计应用: **UI 可以在各种设备**上运行:手机,平板电脑,电视等。例如,平板电脑上的 Gmail 应用将显示标签列表, 平板电脑中的一个活动(屏幕)中所有选定标签中的对话列表以及选定对话中的消息列表。 但是,电话上的同一个 Gmail 应用无法执行此操作,因为屏幕空间不足,因此会在单独的活动(屏幕)中显示每个(标签,对话,消息)。 Android 提供了一个称为 fragment 的构造,以帮助您更轻松地实现这些效果。 我们将在以后的文章中详细学习它们。
#### e)应用和软件
#### e)应用和包
给定一堆源代码和一揽子资源,Android 构建工具将为您提供一个应用。 该应用以 APK 文件的形式出现。 它是 APK 文件,您将上传到 Play 商店或通过其他方式分发。
要了解的重要一点是,每个 android 应用都有一个唯一的包名称,并且必须满足三个要求:
1. 它必须是有效的 Java 软件包名称,因为此软件包中的 android 构建工具将生成一些 Java 源代码。
2. 使用同一软件包的设备上不能同时存在两个应用。
3. 具有相同软件包的两个应用都不能上传到 Play 商店。
1. 它必须是有效的 Java 包名称,因为此包中的 android 构建工具将生成一些 Java 源代码。
2. 使用同一包的设备上不能同时存在两个应用。
3. 具有相同包的两个应用都不能上传到 Play 商店。
因此,您将遵循“ [反向域名](https://en.wikipedia.org/wiki/Reverse_domain_name_notation "Reverse_domain_name_notation")”约定选择一个包名称(例如 com.howtodoinjava.android.app)。 这样,域名系统将确保您的程序包名称前缀(com.howtodoinjava)是唯一的,并且由您来确保其余程序包名称将您的应用与其他应用区分开。
......
......@@ -26,9 +26,9 @@ Table of Contents
## 2)添加 SDK 包
将 ADT 提取到计算机中的某个位置后,单击“ **SDK Manager.exe** ”。 现在,选择要在计算机中安装的一组所需软件包。 接受所有条款和条件; 然后单击确定。 它将下载计算机中所有必需的软件包并自动配置。 您可以一次使用它们,设置完成。
将 ADT 提取到计算机中的某个位置后,单击“ **SDK Manager.exe** ”。 现在,选择要在计算机中安装的一组所需包。 接受所有条款和条件; 然后单击确定。 它将下载计算机中所有必需的包并自动配置。 您可以一次使用它们,设置完成。
在我的机器中,导入的软件包如下(截至日期):
在我的机器中,导入的包如下(截至日期):
![SDK-Manager-Preview](img/87af3f03173433b8f34886b612035b5f.png)
......@@ -36,7 +36,7 @@ SDK-Manager-Preview
除了上述软件包外,您还应该从“其他”选项中下载“ Android 支持库”和“ Android 支持库”,这些选项隐藏在上图中的滚动条下方。
除了上述包外,您还应该从“其他”选项中下载“ Android 支持库”和“ Android 支持库”,这些选项隐藏在上图中的滚动条下方。
## 3)配置虚拟设备
......
......@@ -27,7 +27,7 @@ android:versionName="1.0" >
```
您需要在元素上提供的最大信息是 package 属性。 在这里,您可以提供将被视为应用“基础”的 Java 软件包的名称。 您的软件包是应用的唯一标识符。 一台设备只能安装一个带有给定软件包的应用,而 Play 商店只会列出一个带有给定软件包的项目。 我们已经详细讨论了 [**在 Android 开发中使用的关键术语和概念**](//howtodoinjava.com/android/android-tutorial-key-concepts/ "Android Tutorial : Key Concepts")
您需要在元素上提供的最大信息是 package 属性。 在这里,您可以提供将被视为应用“基础”的 Java 包的名称。 您的包是应用的唯一标识符。 一台设备只能安装一个带有给定包的应用,而 Play 商店只会列出一个带有给定包的项目。 我们已经详细讨论了 [**在 Android 开发中使用的关键术语和概念**](//howtodoinjava.com/android/android-tutorial-key-concepts/ "Android Tutorial : Key Concepts")
## 指定应用版本
......
......@@ -128,7 +128,7 @@ PaaS 供应商为应用开发人员提供了开发环境。 在 PaaS 模型中
Amazon 提供了在 AWS 云上开发安全,可靠和可扩展的 Java 应用所需的所有工具,文档和示例代码。 Eclipse Java IDE 用户可以使用适用于 Eclipse 的 AWS 工具包轻松地开始使用 SDK。 用于 Eclipse 的 [AWS 工具包](https://aws.amazon.com/sdk-for-java/)是 Eclipse Java IDE 的插件,使开发人员可以更轻松地使用 Amazon Web Services 开发,部署和调试 Java 应用。
Amazon 还为许多 AWS 服务(包括 Amazon S3,Amazon EC2,DynamoDB 等)提供了一组专用的 API。 单个可下载的软件包包括 AWS Java 库,代码示例和文档。
Amazon 还为许多 AWS 服务(包括 Amazon S3,Amazon EC2,DynamoDB 等)提供了一组专用的 API。 单个可下载的包包括 AWS Java 库,代码示例和文档。
3. #### Google App Engine
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/log4j/how-to-configure-log4j-using-properties-file/](https://howtodoinjava.com/log4j/how-to-configure-log4j-using-properties-file/)
[**Log4j**](https://howtodoinjava.com/log4j/ "log4j") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 软件包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
[**Log4j**](https://howtodoinjava.com/log4j/ "log4j") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
这篇 **log4j 属性文件教程**,我展示了使用`log4j.properties`文件配置 log4j 的示例代码。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/log4j/how-to-configure-log4j-using-xml-configuration/](https://howtodoinjava.com/log4j/how-to-configure-log4j-using-xml-configuration/)
[Log4j](https://logging.apache.org/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 应用日志为开发人员提供了有关应用故障的详细上下文。 使用 log4j,可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 软件包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
[Log4j](https://logging.apache.org/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 应用日志为开发人员提供了有关应用故障的详细上下文。 使用 log4j,可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
实际上,两个最常见的配置选项是使用`log4j.xml`配置或使用`log4j.properties`配置。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/log4j/how-to-configure-log4j-using-maven/](https://howtodoinjava.com/log4j/how-to-configure-log4j-using-maven/)
[**Log4j**](https://logging.apache.org/log4j/1.2/ "log4j home page") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 软件包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
[**Log4j**](https://logging.apache.org/log4j/1.2/ "log4j home page") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
以下是在项目中配置 log4j 日志记录支持的最基本步骤。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/log4j/how-to-create-logs-in-database-using-jdbcappender-in-log4j/](https://howtodoinjava.com/log4j/how-to-create-logs-in-database-using-jdbcappender-in-log4j/)
[Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 软件包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
[Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
Log4j 带有多个选项来格式化框架创建的日志文件。 它也可以创建简单的日志文件,html 日志文件或 xml 日志文件。 它还使用 mysql 语句将日志语句插入数据库。
......
......@@ -2,7 +2,7 @@
> 原文: [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/)
[Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 软件包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
[Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
Log4j 带有多个选项来格式化框架创建的日志文件。 它也可以创建简单的日志文件,html 日志文件或 xml 日志文件。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/log4j/how-to-create-logs-in-html-format-using-log4j/](https://howtodoinjava.com/log4j/how-to-create-logs-in-html-format-using-log4j/)
[Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 软件包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
[Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。
Log4j 带有多个选项来格式化框架创建的日志文件。 它也可以创建简单的日志文件,html 日志文件或 xml 日志文件。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/dropwizard/health-check-configuration-example/](https://howtodoinjava.com/dropwizard/health-check-configuration-example/)
我们已经看到 [dropwizard](http://www.dropwizard.io/) 在开发[自包含的 REST API](//howtodoinjava.com/dropwizard/tutorial-and-hello-world-example/) 甚至 [REST 客户端服务](//howtodoinjava.com/dropwizard/client-configuration-and-examples/)方面如此有效。 Dropwizard 包含几乎所有必需的软件包,它们可以非常简单地构建 API,而无需使事情复杂化。 dropwizard 的一项易于实现的功能是**运行状况检查服务**,该服务可用于在运行时监视正在创建的应用/组件的状态。
我们已经看到 [dropwizard](http://www.dropwizard.io/) 在开发[自包含的 REST API](//howtodoinjava.com/dropwizard/tutorial-and-hello-world-example/) 甚至 [REST 客户端服务](//howtodoinjava.com/dropwizard/client-configuration-and-examples/)方面如此有效。 Dropwizard 包含几乎所有必需的包,它们可以非常简单地构建 API,而无需使事情复杂化。 dropwizard 的一项易于实现的功能是**运行状况检查服务**,该服务可用于在运行时监视正在创建的应用/组件的状态。
## 实现 Dropwizard 运行状况检查
......
......@@ -87,7 +87,7 @@ Table of Contents
## 3\. Jersey 2 示例– web.xml 更改
您需要在`web.xml`文件中进行第二次更改。 通常,更改是将旧的软件包名称替换为新的软件包名称。
您需要在`web.xml`文件中进行第二次更改。 通常,更改是将旧的包名称替换为新的包名称。
```java
<!DOCTYPE web-app PUBLIC
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册