2019独角兽企业重金招聘Python工程师标准>>>

Tomcat JNDI 配置

JNDI:Java Naming and Directory Interface Java命名和目录接口,顾名思义就是提供Java的名称和目录方面的操作

常用名词解释:

  • 命名系统:一个具有相同命名约定的上下文的集合(可以嵌套:类似目录)
  • 名称空间:一个命名/目录系统中名字的集合

设计思想:

  • JNDI提供通用的接口,底层的名称服务可以多种实现,这种JNDI通过SPI的接口规范可以屏蔽各种SPI具体实现的细节

SPI实现:LDAP/DNS/NIS/RMI/NDS/CORBA


基础包:

  • javax.naming:包含名称服务的类和访问接口
  • Context:上下文:用户定义对象在名称空间中的位置,提供查看、绑定、对象更名等功能
  • InitialContext:提供名称/目录服务的起始位置(JNDI无绝对root的概念,所有的操作都建立在Context上)

javax.nameing.directory:

  • javax.naming扩展包,主要提供目录的功能
  • DirContext:提供对象在directory内的接口(提供对目录属性的查询、更新等功能)

jaxa.naming.spi: 为开发特定的naming/directory系统定义的接口规范

JNDI的用途:连接对象/连接JDBC资源/连接JMS资源/连接JavaMail资源


Tomcat 配置JNDI 数据源般步骤:

①:配置JNDI数据源

Tomcat的conf文件夹下的context.xml文件(eclipse可直接在Servers\Tomcat v8.0 Server at localhost-config下的context.xml配置)

  • name:资源名称
  • auth:授权访问用户名
  • type:资源类型
  • driverClassName:驱动类全路径
  • url:数据库链接字符串
  • username:用户名
  • password:密码 -- maxActive:最大访问并发数
  • maxIdle:最大闲置连接数
  • maxWait:最大等待时间
<Resource name="jndi/mysql"    auth="Container"            type="javax.sql.DataSource"   driverClassName="com.mysql.jdbc.Driver"    url="jdbc:mysql://localhost:3306/test"     username="squirrel"   password="xiaoyang"   maxActive="20"        maxIdle="10"          maxWait="10000"/>

Tomcat引用JNDI资源:web.xml配置

  • description:JNDI资源描述
  • res-ref-name:引用的资源名称,与context.xml配置的资源名保持一致
  • res-type:JNDI资源类型
  • res-auth:授权访问用户名
 <resource-ref>  <description>JNDI DataSource</description>  <res-ref-name>jndi/mysql</res-ref-name>  <res-type>javax.sql.DataSource</res-type>  <res-auth>Container</res-auth>  </resource-ref>

测试JNDI资源:注意JNDI属于J2EE中的规范,运行需要J2EE容器的支持,因此如果使用main方法进行测试会出现异常

package com.zhiwei.model;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.zhiwei.form.UserForm;public class UserJNDITool {//定义数据库基本参数private static Connection ct=null;private static PreparedStatement ps=null;private static ResultSet rs=null;/**JNDI测试只能在WEB项目中测试,Main方法报异常*/public static void testJNDI() throws NamingException, SQLException{  //构建名称/目录上下文对象,作为名称服务的基础环境Context ctx = new InitialContext();  //J2EE容器规范:java:comp/env的JNDI名称前缀必不可少DataSource ds = (DataSource);   ctx.lookup("java:comp/env/jndi/mysql"); ct = ds.getConnection();  ps = ct.prepareStatement("select *from student");rs = ps.executeQuery();while(rs.next()){System.out.println(rs.getString(1)+"-"+rs.getString(2)+"-"+rs.getString(3));}CloseDB();System.out.println("JNDI-->数据库连接关闭:"+ct.isClosed());  }  /**关闭数据库资源*/public static void CloseDB(){try {if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(ct!=null){ct.close();}} catch (Exception e) {e.printStackTrace();}}
}

测试JSP:

<%@page import="com.zhiwei.model.UserJNDITool"%>
<%@page %>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta https-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test JNDI</title>
</head>
<body>
<%
//测试Tomcat的JNDI服务
UserJNDITool.testJNDI();
%>
</body>
</html>

测试结果:


Tomcat 配置 httpss

JDK的keytool工具介绍

生成证书的命令:keytool -genkey

配置Tomcat证书的步骤: ①:生成服务器证书:(注意文件夹事先必须存在/主机名(非IP地址))

keytool -genkey -alias server    -keyalg RSA    -keysize 1024 -validity 365 -keystore D:/keys/server.keystore -storepass 123456

②:生成客户端证书:

keytool -genkey -alias client -keypass 123456  -keyalg RSA  -keysize 1024 -validity 365 -storetype PKCS12  -keystore D:/keys/client.p12  -storepass 123456

注意:PKCS12格式的证书兼容性比较好,如果不是这种格式,谷歌浏览器/火狐浏览器可能直接报错误,无法进入httpss的网页

③:服务器信任客户端证书:

  • 证书格式转换:
keytool -export -alias client -keystore D:/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client.cer
  • 正式导入客户端证书:
keytool -import -v
-file D:/keys/client.cer -keystore D:/keys/server.keystore-storepass 123456
  • 安装客户端证书:单击client.cer证书,直接安装

④:客户端信任服务端证书:

  • 生成服务器安装证书:
keytool -keystore D:/keys/ server.keystore -export -alias server -file D:/keys/server.cer
  • 安装服务器证书:单击server.cer文件,安装证书(证书添加在浏览器"受信任的根证书颁发机构”)

⑤:配置tomcat: server.xml文件

取消注释即可:

<Connector  port="8443"
protocol="org.apache.coyote.https11.https11NioProtocol" SSLEnabled="true"
maxThreads="150"
scheme="httpss"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="D:/keys/server.keystore"
keystorePass="123456" />

⑥:httpss加密的网页访问:

httpss://127.0.0.1:8443/webBasic/ httpss访问地址:注意使用Tomcat配置的httpss端口:8443 https也可以正常访问:https://127.0.0.1:8080/webBasic

可选功能:Tomcat web项目强制使用httpss访问,: 配置web.xml文件:添加如下内容

<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>    <security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>    <user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

转载于:https://my.oschina.net/yangzhiwei256/blog/3017303

Tomcat - 常用配置相关推荐

  1. CentOS7 systemctl tomcat常用配置

    开始配置tomcat 1.环境准备,安装java 在生产环境上,我一般使用oracle java,不使用openjdk,所以先卸载系统自带的openjdk yum remove java 下载orac ...

  2. Tomcat 8(一)Tomcat常用配置

    操作系统:win8 Jdk版本:1.7.0_51 Jdk目录:C:ProgramFilesJavajdk1.7.0_51 Tomcat版本:8.0.3 Tomcat目录:D:ProgramFilesa ...

  3. tomcat常用配置详解

    1 目录结构  /bin:脚本文件目录.  /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载).  /conf:存放配置文件,最重要的是server.x ...

  4. Tomcat的常用配置

    2019独角兽企业重金招聘Python工程师标准>>> 本文索引: 配置tomcat监听80端口 Tomcat虚拟主机 Tomcat日志 配置tomcat监听80端口 默认tomca ...

  5. tomcat https 配置

    以前基本上笔者对于安全性考虑的并不多,最近因为saas平台要开始逐渐推广,所以需要开始逐渐加强xss/crsf/https等措施以避免潜在的安全性风险.本文简单的记录下tomcat下https的配置. ...

  6. maven学习6 Eclipse下Tomcat常用设置

    Eclipse下Tomcat常用设置 1,Eclipse建立Tomcat服务 1.1 新建Server 首先这里是指,jee版的Eclipse.Eclipse是没有像MyEclipse那样集成Tomc ...

  7. Java教程:SpringBoot常用配置

    在Java开发过程中我们会需要使用到一些SpringBoot的设置功能,下面小千就来教大家如何去修改这些常用的配置. 一.修改端口号和访问路径 在Spring Boot 项目中会使用一个全局的配置文件 ...

  8. resin指定java版本_resin的几个常用配置

    本文着重介绍resin的几个常用配置 注: 1. 本文并非resin.conf的使用说明,只是从实用角度出发,按需分析常用的配置.更多的内容到官网学习吧: 2. 基于resin3.x的探讨. (友情提 ...

  9. tomcat相关配置技巧梳理 (修改站点目录、多项目部署、限制ip访问、大文件上传超时等)...

    tomcat常用架构: 1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomcat端口(可参考:分享一例测试环境下nginx+tomcat的视频业务部署记录) 2) ...

最新文章

  1. 我身边那些逃离深圳的朋友们
  2. Android架构师教你如何突破瓶颈,快来收藏!
  3. 基本数据类型使用注意事项
  4. Javascript网页滚动方法
  5. python温度转换代码分析_Python温度转换实例分析
  6. jzoj3189-解密【字符串hash】
  7. ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService
  8. java二分查找递归_java学习之—递归实现二分查找法
  9. Docker上部署MySQLCluster(基于mysql/mysql-cluster镜像)
  10. windows 守护进程
  11. Python面试题之python是一种什么语言及优缺点
  12. 2012 年上半年系统分析师 案例分析真题
  13. c语言炒股软件公式,股票软件怎么使用指标选股公式
  14. 2018年蓝桥杯C++省赛B组【G:螺旋折线】 【思维】
  15. xp怎么删除计算机用户,xp如何删除多余的用户帐户_IT /计算机_信息
  16. Windows7下IPV6设置方法详解
  17. 微软视窗的C++封装
  18. 阿里巴巴年报来了,一天收入6.85亿
  19. python计算机器人运动学分析_V-rep学习笔记:机器人逆运动学数值解法(The Jacobian Transpose Method)...
  20. 直接执行SQL语句的快捷键是什么啊?嘎嘎

热门文章

  1. python引入导入自定义模块和外部文件
  2. 使用和了解Valgrind核心:高级主题
  3. LeetCode 142 环形链表 II
  4. java中发红包案例之红包界面不出来的解决方案
  5. ROS修改pkg名和node名教程
  6. 开启爬虫之路,从零开始...
  7. 进阶篇:6)样机制作与验证
  8. GeoServer地图开发解决方案(三):部署地图数据篇
  9. Java step by step(3): Annotation
  10. (转)Enterprise Architect 7.0入门教程