Java命名和目录接口——JNDI

340 篇文章 0 订阅

JNDI即Java命名和目录接口(JavaNaming and Directory Interface),它属于J2EE规范范畴,是J2EE的核心技术之一,提供了一组接口、类和关于命名空间的概念。JDNI是provider-based技术,它暴露一个API和一个服务供应接口(SPI)。它将名称和对象联系起来,使我们可以用名称访问对象。我们可以把JNDI简单地看成是里面封装了一个name到实体对象的映射,通过字符串可以方便得到想要的对象资源,例如JDBC、JMail、JMS、EJB等。这意味着任何基于名字的技术都能通过JNDI而提供服务,现在它支持的技术包含了LDAP、RMI、CORBA、NDS、NIS、DNS、Windows注册表等等。

 竟然我们都可以直接各种服务,为什么还要在封装一层JNDI?总的来说,JNDI的出现就是为了分布式开发服务,用一条线把责任任务分成两边,一边的人负责开发这些分布式对象,一边的人只要使用这些分布式对象即可。两边的人不必是同属一个公司,并且两边的人开发通常不是并行的,也不必同属一个项目,就像一个应用服务器的JNDI中注册了一个数据源,不管在哪个项目中,只要有需要就可以通过JNDI使用这个数据源。总结起来就是随着分布式应用的发展,远程访问对象成为常用方法,尽管我们通过socket可以实现远程通信,但要关心每一个远程访问的具体细节并实现,这样局限性还是比较大,效率低下。而伴随着JNDI技术的出现,将大大简化远程调用,方便查找远程或本地的对象。

JNDI包含了很多的服务接口,如图3-1-8-1,JNDIAPI提供了访问不同JNDI服务的一个标准的统一的实现,其具体实现可由不同的Service Provider来完成,具体调用类及通信过程对

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
第1章 Java EE的基本知识 1 1.1 Java EE的出现及其特点 1 1.2 Java EE的分层模型和平台组成 4 1.2.1 Java EE的分层模型 4 1.2.2 Java EE的结构变形 5 1.2.3 Java EE平台的组成 7 1.3 Java EE参与人员的角色 9 1.4 开发工具Eclipse 10 1.5 小结 13 第2章 使用Jakarta Commons来简化开发 14 2.1 Jakarta Commons的功能和用法 14 2.2 小结 18 第3章 Java EE容器 19 3.1 什么是容器 19 3.2 Tomcat的安装和使用 20 3.3 小结 25 第4章 在Java EE中使用XML 26 4.1 什么是XML 26 4.1.1 理解XML 26 4.1.2 XML的语法 27 4.1.3 XML命名空间 31 4.2 XML能用来干什么 32 4.3 用DTD验证XML文档 33 4.4 用Schema验证XML文档 35 4.4.1 使用XML Schema 35 4.4.2 Schema的语法 37 4.5 用JAXP读写XML 44 4.6 Java EE中的JAXB 55 4.7 小结 64 第5章 使用Java Servlet开发动态网页 65 5.1 Servlet的概念和生命周期 65 5.2 如何编写Servlet 67 5.3 使用Eclipse和Tomcat开发Servlet实例——输出字符串响应 72 5.4 小结 77 第6章 JSP——前后台更好地分离 79 6.1 JSP的概念 79 6.2 JSP页面的组成 80 6.2.1 JSP的指令元素 82 6.2.2 JSP的脚本元素 83 6.2.3 JSP的标准动作元素 85 6.2.4 JSP中的内置对象 87 6.3 实例——利用JSP制作图片缩略图 87 6.4 小结 90 第7章 JSTL——JSP标准标签库 91 7.1 JSTL基础 91 7.1.1 JSTL的核心标签库 92 7.1.2 JSTL中使用表达式语言 93 7.2 实例——利用JSTL标签生成数字序列 95 7.3 小结 97 第8章 JavaBean组件 98 8.1 JavaBean是什么 98 8.2 实例——在JSP中调用JavaBean 99 8.3 小结 106 第9章 开源Web开发框架Struts 107 9.1 Struts框架基础 107 9.1.1 Struts框架的出现及其优点 107 9.1.2 Struts的MVC框架 108 9.2 Struts的配置 110 9.2.1 配置Web.xml 110 9.2.2 配置Struts-config.xml 111 9.2.3 多个配置文件的使用 120 9.3 Struts的各种组件 121 9.3.1 Struts的处理流程 122 9.3.2 ActionServlet 123 9.3.3 Action类 123 9.3.4 ActionForm 125 9.3.5 ActionMapping 126 9.4 Struts标签 127 9.4.1 如何使用Struts标签 127 9.4.2 HTML标签 128 9.4.3 Bean标签 134 9.4.4 Logic标签 136 9.4.5 Nested标签 137 9.5 小结 138 第10章 新一代的Struts 2 139 10.1 Struts 2框架的特点 140 10.2 实例——Struts 2的“Hello World” 143 10.3 小结 151 第11章 利用JDBC访问数据库 152 11.1 JDBC基础 152 11.1.1 如何用JDBC访问数据库 152 11.2 实例——利用JDBC访问SQL Server数据库 154 11.3 小结 156 第12章 利用Hibernate访问数据库 157 12.1 ORM——关系-对象映射的概念 157 12.2 Hibernate基础 158 12.2.1 POJO对象 158 12.2.2 Hibernate映射文件 159 12.2.3 Hibernate配置文件 159 12.3 使用Hibernate 161 12.4 小结 165 第13章 Struts和Hibernate实例——两个与登录有关的实例 166 13.1 Struts和Hibernate的开发环境配置 166 13.1.1 数据库的安装和管理 166 13.1.2 Hibernate的安装 168 13.1.3 Struts的安装 169 13.2 实例一:用户密码验证和登录 170 13.2.1 总体设计 170 13.2.2 具体实现 170 13.2.3 实例小结 185 13.3 实例二:用户密码修改 185 13.3.1 总体设计 186 13.3.2 具体实现 186 13.3.3 运行实例 201 13.4 小结 201 第14章 JSF——类Swing的Web开发框架 202 14.1 JSF基础 202 14.2 实例——JSF处理用户登录 209 14.3 小结 215 第15章 利用JavaMail收发电子邮件 217 15.1 电子邮件协议和JavaMail 217 15.2 JavaMail核心类 218 15.2.1 Session类 218 15.2.2 Message类 218 15.2.3 Address类 219 15.2.4 Authenticator类 220 15.2.5 Transport类 220 15.2.6 Store和Folder类 220 15.3 实例——利用JavaMail收发邮件 221 15.3.1 准备阶段 221 15.3.2 编写发送邮件的实例 223 15.3.3 编写接收邮件的实例 235 15.4 小结 241 第16章 基于良好设计模式的Spring 243 16.1 Spring简介 243 16.2 实例——用Spring来打招呼 246 16.3 小结 248 第17章 JNDIJava RMI远程调用 249 17.1 用Java RMI实现远程调用 250 17.2 利用JNDI定位资源 256 17.3 实例——分布式的HelloWorld 260 17.4 小结 264 第18章 Java消息服务 265 18.1 消息系统和JMS 265 18.1.1 JMS API 265 18.1.2 点对点消息模式 266 18.1.3 发布者/订阅者模式 267 18.1.4 同步和异步方式 268 18.2 编程模型 268 18.2.1 管理对象 269 18.2.2 连接对象 270 18.2.3 会话 270 18.2.4 消息产生者 270 18.2.5 消息消费者 271 18.2.6 消息 272 18.2.7 异常处理 272 18.3 实例——利用JMS收发消息 273 18.3.1 一个简单的点对点模式消息实例 273 18.3.2 一个简单的发布者/订阅者模式消息实例 279 18.4 小结 285 第19章 利用JXTA编写P2P应用 286 19.1 P2P模型 286 19.2 JXTA框架 288 19.3 实例——JXTA开发P2P实例 292 19.4 小结 296 第20章 实现业务逻辑的EJB 297 20.1 EJB基础知识 297 20.2 实例——利用EJB转换字符串 301 20.3 小结 307 第21章 Web Service 308 21.1 Web Service基础 308 21.2 实例——利用AXIS开发一个简单的Web Service 310 21.3 小结 314 第22章 Java EE的安全 315 22.1 利用JAAS进行验证和授权 315 22.2 利用JSSE进行安全传输 317 22.3 小结 317 第23章 Java EE的测试 319 23.1 开发者为什么需要学习测试 319 23.2 测试的基本概念 320 23.3 利用JUnit进行单元测试 324 23.4 利用StrutsTestCase对Struts进行测试 328 23.5 压力测试和JMeter 334 23.6 其他开源测试工具 339 23.7 小结 343
1. 模块命名、数据库表命名、域模型命名、各分层的类/方法命名、页面的命名; 模块命名: a. 包命名:com.project_name.module_name.action/service/dao/ws; service的实现都置于com.project_name.module_name.service.impl下; b. 接口命名遵守XxxxService,接口实现遵守XxxxServiceImpl; 2. 包的设计、页面的层次结构设计(jsp/css/js等文件的结构); 3. log、异常(声明式异常)的约定设计; 4. 链接、按钮、表单提交的统一方式;通用式Ajax调用与页面跳转统一模型; 5. 响应一个请求的分层结构约定,列举几个示例(常规调用、Ajax调用、WebService调用、提供WebService暴露、硬件设备接口调用); 6. 验证代码质量的约定,如JUnit、EMMA、FindBugs、CheckStyle、PMD的使用;Hudson持续集成需注意的; 7. 压力测试、防内存泄漏测试; 基础CSS:标签的各种状态的样式;表格单双行的样式; 开发一个Action请求的响应: 前置条件:该Action涉及的Entity及EntityName.hbm.xml已经准备好。 步骤: a. 前端页面触发Action的请求; 统一采用全路径请求,URL格式: 1> basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2> basePath/web/moduleName/gotoXxx.action (无需调用Service,直接跳转) 包括jQuery的Ajax方式和非Ajax方式; 包括表单提交; 参数设值的方式: 1> URL参数: basePath/web/moduleName/*_*.action?entity.propertyName=paramValue&paramName=paramValue 2> 或 另外,对于表单的提交,前后台都必须做数据校验,SWDF已提供了此能力,进行简单的配置即可,前台直接提供类似以下代码即可,点此查看前端校验详细规则说明。 前端校验示例; 后台数据校验,点此查看校验详细说明. b. 配置struts-moduleName.xml; 直接跳转示例; 调用Service示例; c. 开发对应的{EntityName}Action类; 该类必须继承com.hikvision.swdf.xx.BaseAction,该Action类有一个关键属性entity,即泛型Entity类的一个实体,该属性默认填充好了请求提交过来的entity对应参数(即entity.propertyName); d. 开发Service接口和Service接口实现,并在Action中通过set方法注入该Service; 接口文件:UserService 接口实现:UserServiceImpl 注入Service e. 开发DAO,DAO继承com.hikvision.xxx.HibernateBaseDAO; 示例 f. 配置applicationContext-*.xml; 配置DAO bean、Service Bean、Action Bean及注入的配置; g. 测试; 备注: 1. Action建议统一遵守通配符的约定,basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2. 统一命名规则:接口类似UserService,接口实现类型UserServiceImpl;(IUserService和UserServiceImpl) 开发一个Action调用关联应用提供的WebService 前置条件:该WebService?WSDL可正常获取 步骤: a. 配置applicationContext-wsclient.xml; Spring管理第三方WebService实例bean Jaxws-client配置代码 b. 生成第三方WebService接口文件;(提供系统自动生成) 自动生成代码 c. 页面调用Action请求,Action中注入WebService实例bean; Action对应方法直接调用第三方WebService的相关方法; d. 测试; 备注: 1. 步骤b,接口文件必须同包名同类名置于src目录下; 开发一个Action调用关联应用开放的HTTP请求 步骤: 1. 页面调用Action请求; 2. Action类相应方法使用封装好的HttpClient相关工具类,准备好HTTP请求的相关参数header参数和body参数并以xml的方式提交HTTP请求; 3. 解析该HTTP请求返回值(XML或JSON); 4. 响应结果; 5. 测试; 备注: 开发一个需要对第三方应用发布的WebService 步骤: a. 开发WebService接口,@WebService进行注解该接口; b. 开发WebService接口实现类,@WebService注解该实现类,并制定endpointInterface; c. 配置applicationContext-ws.xml d. 测试 备注: 开发一个需要对第三方应用发布的RESTful Service 步骤: a. 开发RS接口提供如下Annotation; b. 开发RS接口实现,并提供如下Annotation; c. 配置applicationContext-rs.xml 备注: 所有Annotation的涵义解释如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超人汪小建(seaboat)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值