编辑: -尝试格式化问题并在我的博客中以更明显的方式接受答案
这是原始问题.
我收到此错误:
详细消息sun.security.validator.ValidatorException:PKIX路径构建失败:
sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径导致javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径
我使用Tomcat 6作为网络服务器.我有两个HTTPS Web应用程序安装在不同端口上但位于同一台机器上的不同Tomcats上.说App1(port 8443)和
App2(port 443).App1连接到App2.当App1所连接到App2我得到上述错误.我知道这是一个非常常见的错误,所以在不同的论坛和网站上遇到了很多解决方案.我有server.xml两个Tomcats 的以下条目:
keystoreFile="c:/.keystore"
keystorePass="changeit"
Run Code Online (Sandbox Code Playgroud)
每个站点都说同样的原因,即app2提供的证书不在app1 jvm的可信存储中.当我试图在IE浏览器中访问相同的URL时,这似乎也是正确的,它可以工作(加热,这个网站的安全证书存在问题.在这里我说继续这个网站).但是当Java客户端(在我的情况下)遇到相同的URL时,我得到上述错误.所以把它放在信任库中我试过这三个选项:
选项1
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
Run Code Online (Sandbox Code Playgroud)
Option2 在环境变量中设置如下
CATALINA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Run Code Online (Sandbox Code Playgroud)
选项3 在环境变量中设置如下
JAVA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Run Code Online (Sandbox Code Playgroud)
但没有任何效果.
最后工作的 是执行如何使用Apache HttpClient处理无效SSL证书中建议的Java方法?由Pascal Thivent执行,即执行程序InstallCert.
但这种方法适用于devbox设置,但我无法在生产环境中使用它.
我很奇怪,为什么上面提到的三种方法时,我已经中提到的相同值没有工作server.xml的app2服务器和相同的价值观信任设置
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") and System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); …
我正在学习在我的项目中使用的Spring Framework.我在web.xml文件中找到了 ContextLoaderListener条目.但无法弄清楚它对开发人员有何帮助?
在ContextLoaderListener的官方文档中,它说它是启动WebApplicationContext.关于WebApplicationContext JavaDocs说:
用于为Web应用程序提供配置的界面.
但我无法理解我在ContextLoaderListener中实现了什么,它在内部初始化WebApplicationContext?
根据我的理解,ContextLoaderListener 读取Spring配置文件(使用web.xml中的contextConfigLocation给出的值),解析它并加载该配置文件中定义的单例bean.类似地,当我们想要加载原型bean时,我们将使用相同的webapplication上下文来加载它.因此,我们使用ContextLoaderListener初始化web应用程序,以便我们提前读取/解析/验证配置文件,每当我们想要注入依赖项时,我们都可以毫不拖延地直接执行它.这种理解是否正确?
以下是封装和抽象的简要定义.
抽象:
Java中的抽象过程用于隐藏某些细节,仅显示对象的基本特征.换句话说,它处理对象(界面)的外部视图.我在不同站点看到的唯一好例子是界面.
封装:
它基本上是在私有,公共,受保护等修饰符的帮助下隐藏对象的状态.我们只在需要时通过公共方法暴露状态.
我们用修饰符所实现的private,public也隐藏了来自外部世界的不必要的细节,这也是一个抽象概念
因此,从上面的解释来看,封装是抽象的一部分,或者我们可以说它是抽象的一个子集.但是,为什么封装术语是在我们只能用抽象来处理的时候发明的呢?我确信应该有一些区别于它们的主要区别,但网上的大多数材料对两者都说几乎相同.
虽然这个问题早已在这个论坛上提出过,但我再次发布它并带有特别的怀疑.一些回复还说抽象是一个概念,封装是实现.但我不买这个 - 如果是真的,那么我可以认为提供这两个不同的概念来迷惑我们.
更新: - 5年后我得出了自己的答案,这是基于这篇文章及以下答案的要点
我是Hibernate的新手,上周经历了Hibernate教程.我对Session类中的方法save,update,saveOrUpdate和merge有一些疑问.这些是:
save方法:用于在数据存储区中插入新创建的对象.(基本上标识符值为0).就像我创建一个新客户并调用保存操作一样,它会将其保留在数据存储区中并生成标识符.
它是否正确?如果我们调用已经持久的对象保存不确定会发生什么?
update方法:它用于更新数据存储区中已经存在的持久对象.(基本上,标识符值将是一些非零值).就像我在更新某个字段值后加载新客户并调用更新操作一样,它会在数据存储区中更新它.
根据我的理解,它应该失败,但有一些例外,因为根据API更新是针对分离对象的.它是否正确?如果是,我们应该调用什么来更新同一会话中的对象(我的意思是如果对象没有分离).另一点是:如果我们在新创建的对象上调用update,会发生什么?
saveOrUpdate方法:它将基于未保存值检查调用上面的任何一个(它必须基于标识符零或非零值做,对吗?)所以如果我们有持久的客户对象并且我们更新他的姓氏并创建一个新帐户也,然后saveOrUpdate将照顾它.
我理解正确吗?
合并方法: 它将像更新一样运行,但是如果具有相同标识符的持久对象已经在会话中,它将更新持久对象中的分离对象值并保存它.
但是如果当前没有与会话关联的持久化实例,则会从数据存储区加载持久对象,然后更新已加载的持久对象中的已分离对象的值,然后更新它.
我也明白了吗?
我正在使用Javascript self.open()来在新窗口中打开链接,我希望该窗口最大化.我尝试了这个fullscreen=yes选项,它真的不能做我想要的.我使用下面的代码:
self.open(pageLoc,popUpName,'height=1600,width=1800,resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,location=yes');
Run Code Online (Sandbox Code Playgroud)
如果我也提到fullscreen=yes,那么窗口会像按F11一样打开.但我不希望如此.我想要的是当我双击IE并点击右上角的最大化图标时.
正如我所提供的height和width值如此之大,它是接近最大化的窗口,但不是实际的窗口最大化.(我说这个的原因是因为即使现在如果我点击最大化按钮,它进一步扩展一点点)
我通过各种资源了解了它们.进口商是: -
这是我对什么是差异的理解.我不确定我对JPA和ORM是否正确
ORM:对象关系映射是将数据从面向对象语言转换为关系数据库的概念/过程,反之亦然例如在java中,它借助于反射和jdbc完成.
Hibernate:它执行上面的概念.
JPA:它比ORM高出一步.它的高级API和规范使得不同的ORM工具可以实现,从而为开发人员提供了将实现从一个ORM更改为另一个ORM的灵活性(例如,如果应用程序使用JPA api并实现hibernate.将来它可以切换到IBatis如果需要的话.但另一方面,如果应用程序直接使用没有JPA平台的Hibernate锁定实现,那么switiching将是一项艰巨的任务)
可以有/不带JPA规范的ORM实现.例如,根据hibernate部分下的这个链接,只有Hibernate 3.2及更高版本提供了Java Persistence API的实现.
我想从hibernate session获得jdbc连接.在hibernate session中有一个方法,即session.connection(); 但它已被弃用.我知道这仍然有效,但我不想使用弃用的方法,因为我相信他们必须为此提供一些替代方案?在http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html连接方法api说使用org.hibernate.jdbc.Work为此目的,但我没有找到任何示例?
我已经有了一个小型Java项目.我想将它移动到Maven,所以我想使用Eclipse创建pom.xml,以便我可以在命令提示符下使用pom构建它.我以前没有和Maven合作过,虽然我和Ant合作过.
如何使用Eclipse为我的Java项目创建pom.xml?
当我在eclipse中右键单击我的项目时,我看到两个选项与存储库同步并更新到head.我不知道他们之间有什么区别?
我不是db guy.但我需要创建表并对它们执行CRUD操作.如果我默认在所有列上创建索引,我会感到困惑吗?这是我在创建索引时考虑的理解.
索引基本上包含内存位置范围(第一个值存储的起始内存位置到存储最后一个值的最终内存位置).因此,当我们在表索引中插入任何值时,需要更新列,因为它还有一个值,但列值的更新不会对索引值产生任何影响.对?所以底线是当我的列用于两个表之间的连接时,我们应该考虑在连接中使用的列上创建索引,但是可以跳过所有其他列,因为如果我们在它们上创建索引,则会在新值时涉及更新索引值的额外成本插入列中.对?
考虑这种情况,其中表格mytable包含两个三列,即col1,col2,col3.现在我们解雇这个查询
select col1,col2 from mytable
Run Code Online (Sandbox Code Playgroud)
现在这里有两种情况.在第一种情况下,我们在col1和上创建索引col2.在第二种情况下,我们不创建任何索引.**根据我的理解案例1将比case2快,因为在案例1中我们oracle可以快速找到列内存位置.所以这里我没有使用任何连接列,但仍然索引在这里帮助.那么我应该考虑在这里创建索引吗?**
如果在上面的相同场景中,如果我们开火了怎么办
select * from mytable
Run Code Online (Sandbox Code Playgroud)
代替
select col1,col2 from mytable
Run Code Online (Sandbox Code Playgroud)
索引会在这里帮忙吗?