这似乎是一个古老的问题(它是:))Tomcat和JBoss之间哪个服务器更好,但我还没有找到足够好的答案来解决我的问题.
我知道Tomcat只是一个servlet引擎,而且JBoss提供了更多功能,但是我无法理解为什么Tomcat在某些情况下比jboss更好用.我在某处读到JBoss有一个可插拔的架构,如果需要,你可以拔掉JBoss的功能,使其基本上成为一个tomcat servlet容器.如果是这种情况,那么这样做是不是更好,而不是使用Tomcat,以便留下重新插入的东西.
我发现有利于Tomcat的另一个解释是它是轻量级的,这意味着更少的内存需求,或者是否也允许更快的响应.同样,我需要知道jboss不会按照要求加载组件,即如果我只使用servlet,那么jboss将不会跳过其余的功能并自动变为轻量级.
本质上,我的应用程序没有任何Java EE功能,但由于上述原因,支持Tomcat的"轻量级"参数听起来不够令人信服.
请帮忙.
编辑:我们当时最终决定使用tomcat,我们已经使用它超过6个月,非常容易使用.事实上,我们发现了一些实际用途,我们可以在同一台服务器上为不同的开发人员轻松运行多个tomcat实例,jboss也是如此.
我发现tomcat对我们的工作没有任何麻烦,因此当你没有使用大量的Java EE功能时,它可能是正确的选择.PS:请注意我们仍然使用Spring和Hibernate与Tomcat
我正在评估在tomcat中使用会话复制的粘性会话的情况.从我最初的评估开始,我认为如果我们启用会话复制,那么在一个tomcat节点中启动的会话将被复制到所有其他tomcat节点,因此我们不需要粘性会话来继续会话,并且任何节点都可以接收请求.
但似乎会话复制通常与粘性会话一起使用,否则只要请求转到其他节点,就需要更改会话ID.ref:http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html#Bind_session_after_crash_to_failover_node
如果你必须启用粘性会话,任何人都可以解释会话复制的真正用途吗?因为当具有给定会话ID的请求始终到达同一节点时,您将不必要地在每个节点上复制会话.在节点崩溃的情况下它可能是有益的,但是这不会经常发生并且仅使用会话复制似乎是一种过度杀伤.
我最近参与处理服务器的控制台日志,我很好奇,出于好奇,与小文件相比,写入大文件存在性能问题.
例如,保持日志文件大小不是让它们变得笨重是一个好主意,但我无法支持任何一种方法.
在阅读或搜索文件时可能会出现问题,但是现在我更想知道写作是否会受到任何影响.寻找专家意见.
编辑:我认为操作系统只需打开文件句柄并将数据推送到文件系统.与文件大小几乎没有关联,因为您必须继续将数据附加到文件末尾,并且每当数据块已满时,OS将为文件分配另一个块.正如我之前所说,由于文件块的碎片整理,在读取和搜索方面可能会出现问题,但在写入时我找不到多少差异.
我必须使用Junit测试一些Thrift服务.当我将测试作为Thrift客户端运行时,服务会修改服务器数据库.我无法找到一个好的解决方案,可以在每次测试运行后清理数据库.清理很重要,特别是因为ID必须是唯一的,目前从XML文件中读取.现在,我必须在运行测试后手动更改ID,以便下一组测试可以运行而不会在数据库中抛出主键冲突.如果我可以在每次测试运行后清理数据库,那么问题就完全解决了,否则我将不得不考虑其他解决方案,比如生成随机ID并在需要ID的地方使用它们.
编辑:我想强调一下,我正在测试一个写入数据库的服务,我没有直接访问数据库.但是,因为服务是我们的,我可以修改服务,以便在需要时提供任何清理方法.
在为网站实现"记住我"功能的同时,为什么我们使事情变得复杂并且在会话令牌之外有一个名为mem me token的令牌.
据我所知,记住我可以使用令牌登录并创建一个新的会话令牌,而会话令牌只持续几分钟或直到用户关闭浏览器.为什么我们不能将会话令牌本身的到期持续时间增加到我们希望用户登录的所需时间?
我需要在运行tomcat的基于flex的应用程序中实现这样的功能,我想知道需要记住我的令牌
此外,是否有可能在tomcat中开箱即用?
我想在我的网络中配置一台机器,以接受来自特定机器的所有呼叫而无需身份验证.为此,我计划使用客户端计算机的IP地址作为所需的信任因素,以允许未经检查的身份验证.
我担心的是,是否可以准确地确定java servlet中客户端的IP地址?我可以通过一些黑客机制来改变我在servlet中获得的IP,使我的服务器相信它是可靠的IP吗?
例如,如果我的服务器计算机配置为信任192.168.0.1,那么192.168.0.1以外的其他客户端是否可以假装为192.168.0.1并欺骗我的身份验证机制?
多年来这似乎是一个众所周知的问题,可以在这里阅读:http: //blog.xebia.com/2008/12/11/sorting-and-pagination-with-hibernate-criteria-how-it-can-走,错用,加入/
甚至在hibernate faqs中找到引用:
这也已在之前的SO上讨论过
如何通过连接和基于行的限制(分页)在hibernate中获得明显的结果?
问题是,即使经过所有这些资源,我也无法解决我的问题,这似乎与这个标准问题有点不同,尽管我不确定.
这里提出的标准解决方案涉及创建两个查询,第一个用于获取不同的ID,然后在更高级别的查询中使用这些查询来获得所需的分页.我的情况下的hibernate类就像
A
- aId
- Set<B>
B
- bId
Run Code Online (Sandbox Code Playgroud)
在我看来,子查询似乎对我来说很好,并且能够获得不同的aIds但是应该进行分页的外部查询再次获取重复项,因此子查询中的distinct不起作用.
假设我有一个A对象有一组四个B对象,我的分析是因为引入了set,同时获取了数据
session.createCriteria(A.class).list();
Run Code Online (Sandbox Code Playgroud)
hibernate在列表中填充指向一个对象的四个引用.因此,标准解决方案对我来说是失败的.
有人可以帮忙提出这个案例的解决方案吗?
编辑:我决定自己从独特的结果集中进行分页.另一个同样糟糕的方法可能是延迟加载B对象但是这需要对所有A对象进行单独查询以获取相应的B对象
我有一个XML,它有与三种类型的Java对象相对应的标记,这些标记将从XML创建.对象的形式如下:
A
- static Map<String, A>
- String name
- String aInfo1
- String aInfo2
B
- static Map<String, B>
- String name
- String bInfo1
- String bInfo2
C
- A aObject
- B bObject
Run Code Online (Sandbox Code Playgroud)
现在,在我的XML中,我为A对象和B对象定义了一个标签列表,然后我为C对象定义了标签,这些对象使用name字段引用A和B对象.我有两个要求:
我已经阅读了一些像JAXB这样的Java框架,但是我无法想出一种从XML创建这种类型的对象的方法.Java中是否有一个可以开箱即用或者逻辑最少的框架?
编辑:
还有另一个要求:我需要定义表单的D和E对象
D
- Map<A, E>
Run Code Online (Sandbox Code Playgroud)
我将定义E对象,类似于在web.xml中定义servlet的方式,即首先定义E类的名称和类,然后在其他地方使用E的名称.另外,传递参数以实例化E对象.标签看起来像:
<E>
<name>queryProcessor</name>
<class>com.mydomain.QueryProcessor</class>
</E>
Run Code Online (Sandbox Code Playgroud)
现在,这将在定义D中的Map内容时使用
<D>
<map>
<A>name_of_some_A_object</A>
<E name="queryProcessor">
<param1>name_of_some_B_object</param1>
<param2>name_of_some_B_object</param2>
</E>
<A>name_of_some_A_object</A>
<E name="queryProcessor">
<param1>name_of_some_B_object</param1>
<param2>name_of_some_B_object</param2>
</E>
</map>
</D>
Run Code Online (Sandbox Code Playgroud)
本质上,D中的映射将通过实例化一个基类型E的类来填充,其中传递给它的参数和由其名称引用的A的对象.
今天我遇到了一个有趣的问题,我认为这在 Java 中是不可能的。我针对 jgroups 2.6 版本编译了 java 代码,但在运行时使用了 2.12 版本(tomcat Web 应用程序部署)。我收到以下错误
org.jgroups.Message.<init>(Lorg/jgroups/Address;Lorg/jgroups/Address;Ljava/io/Serializable;)
Run Code Online (Sandbox Code Playgroud)
假设 API 从那时起会发生变化,我想将我的代码移植到 jgroups-2.12,但令我惊讶的是,代码用 jgroups-2.12 编译得很好,当我替换新的 jar 时(没有更改代码中的一行,只是针对 jgroups-2.12 而不是 jgroups-2.6 进行编译),它工作得很好。
后来我发现Message(Address, Address, Serializable)2.6中的构造函数在2.12中改为了Message(Address, Address, Object)。这意味着在运行时,JVM 试图找到完全相同的方法,但未能成功。
这是否意味着 Java 编译器在编译时嵌入了精确的方法名称和精确的参数,而具有更广泛参数的方法将不起作用?
我必须制作一个原型应用程序,我将一个小图像叠加到给定文件夹的文件图标上.假设我有一个文件夹/ MyDocuments /并且有三个文件/MyDocuments/Doc1.rtf /MyDocuments/Doc1.pdf和/MyDocuments/Doc1.jpg我有一个图像myicon.png,现在我必须叠加这个图像myicon .png覆盖/ MyDocuments /中存在的所有三个文件的文件图标
我知道我可以使用NSWorkspace sharedWorkspace中的方法来获取和设置这些文件的文件图标,但我不知道如何使用图像myicon.png并将其叠加在这些文件的现有图标上.
如果有人看过Dropbox应用程序(dropbox.com),那么它与您在Dropbox文件夹中看到更改图标的方式类似
我假设它将使用NSImage完成,但我不知道如何做到这一点.
注意:图像myicon.png将仅占据这些文件原始图标的左上角部分,即图像不应与现有图标完全重叠,但只应占用左上角的1/4部分.
我们目前正在评估不同数据库中的故障转移支持.
我们之前使用的是HSQLDB,但它似乎没有群集/复制支持.
我们的要求只是拥有两个数据库服务器,一个仅用于同步备份,但如果主服务器关闭,则辅助服务器应自动开始充当主服务器.
有没有人为这样一个用例评估MySQL,PostgreSQL或任何其他数据库服务器?
编辑:我们曾考虑使用MySQL集群,但现在看来它是GPL许可证,我们将无法使用它.有人可以建议一个可以使用的同步复制/集群解决方案吗?我们目前正在使用HSQL,因此在集群模式下使用HSQL的解决方案对我们来说是理想的,但我们愿意接受变革.
java ×6
tomcat ×3
apache-flex ×1
cocoa ×1
compilation ×1
database ×1
file ×1
file-io ×1
hibernate ×1
hsqldb ×1
ip ×1
jaxb ×1
jboss ×1
jibx ×1
jsessionid ×1
junit ×1
logging ×1
macos ×1
mysql ×1
networking ×1
nsimage ×1
performance ×1
postgresql ×1
remember-me ×1
replication ×1
session ×1
spring ×1
sql ×1
unit-testing ×1
xml ×1