我想在下一个项目中开始使用JEE6,我必须在我的工作中工作,但也有一个限制(某种程度):Tomcat 5.5我的问题是,GlassFish会带来哪些改进(安全/速度) )vs现有的Tomcat(5.5)还是升级到新版本7?
我正在尝试为Java应用程序创建Web用户界面.用户界面非常简单,包括一个页面,其中包含一个供用户提出查询的表单,以及一个结果页面 - 有点像Google的搜索引擎或Ask.com.
我对Java的基本API非常熟悉,但是我没有太多使用Java进行Web环境的经验(尽管我使用过ASP.NET),所以我正在寻找一些建议:
我应该使用什么Web应用程序服务器?请注意,我的界面非常轻,我只想要一些快速,易于启动/重置/停止和(重新)部署我的应用程序的东西.此外,我需要它在多种环境中工作,即GNU/Linux,Mac OS X和Windows XP/Vista.此外,我使用的ant和Eclipse,所以这将是巨大的,如果我可以轻松地添加一些ant目标服务器的管理,和/或使用IDE管理服务器.我已经研究过Tomcat和Jetty,后者看起来非常轻巧,易于安装和部署.这是理想的,因为GUI仅用于演示目的,我可能需要将其部署在不同的计算机中.然而,Tomcat已经存在了很长时间,而且似乎更成熟.
至于网页,Java Server Pages看起来很合适,因为它们看起来非常简单,我正在努力完成(处理表单并输出结果),但我很满意建议.
Engine,它有一个方法run(String),它将处理用户的输入并返回结果显示.这个类是应用程序的核心.现在,我只想将这个类实例化一次,因为它需要大量内存,并且需要很长时间才能启动,所以我想在应用程序/服务器启动时创建它,并存储该引用应用程序的整个范围(即,直到我停止服务器).然后,对于每个用户请求,我只需调用实例的run方法Engine,并显示其结果.如何用Java实现这一目标?短版:
我应该使用什么标准来评估Perl"app server"(mod_perl替换)的可能候选者?
我们正在寻找某种框架,它允许重复执行各种Perl程序(作为服务),而无需支付以下费用:
每次执行时重新启动perl解释器一次
每次执行一次加载/编译Perl模块
(这两个都是运行mod_perl提供的好处)
笔记:
我们并不太关心mod_perl提供的任何额外好处,例如深度Apache集成.
这将是一个纯粹的应用程序服务器,这意味着不需要任何特定于Web的功能(如果应用程序服务器提供它,则不会出现问题,只是不需要).
我们当然会考虑明显的标准(原始速度,生产就绪稳定性,主动开发,在我们关心的操作系统上运行的能力).我感兴趣的是我们可能希望从这样的框架/服务器中获得的不那么微不足道和微妙的东西.
背景:
在$ work,决定他们想要替换当前情况的权力(简单的webapps在Embperl中开发并通过Apache/mod_perl部署).
决定使用(本土)MVC系统,该系统将具有View的Java Spring前端; 并且Controller会将后端服务请求分解为执行模型职责的每个应用程序服务(不要挂在这个细节上 - 它与主要问题不太相关).
后端服务的一个选项是Perl,因此我们可以利用我们现有的所有Perl IP(库,webapp后端代码),而不必将其100%移植到Java.
总结一下:
| View | Model/app | Model loaded/executed by: |
================================================================================
OLD | Empberl | Model.pm | mod_perl has Model.pm loaded, called from view.epl |
NEW | Java | Model.pm | perl generic_model.pl -model Model (does "require") |
================================================================================
Run Code Online (Sandbox Code Playgroud)
现在,那些在一段时间内进行Perl Web开发的人会立即注意到新设计中最明显的问题:
| Perl interpreter starts | Perl modules are loaded and compiled |
=======================================================================
OLD | Once per …Run Code Online (Sandbox Code Playgroud) 为什么我们需要Java中的Application Server,如JBoss或WebSphere.我们是否有可能仅使用Java(Apache Tomcat)开发大型网站.有数千名用户暂时在网站上连接.一个例子是像b2b这样的网站.
Application Server的成本是多少?如果你比较不同的应用程序服务器之间的价格,如果有任何免费版本,请点击它,我将感谢.
ClassLoader泄漏通常会导致java.lang.OutOfMemoryError:PermGen.在处理应用程序服务器的过程中,您可能会看到这是许多重新部署常见应用程序的结果.可以在这两个链接上看到对此问题的解释和可能的解决方案.(其中包括)
http://dev.eclipse.org/blogs/memoryanalyzer/2008/05/17/the-unknown-generation-perm/ http://blogs.oracle.com/fkieviet/entry/classloader_leaks_the_dreaded_java
现在大部分时间他们很容易绕过.只需增加-XX:MaxPermSize,当不可避免的情况发生时,完全重启JVM.尝试解决这个问题的问题是,在大型应用程序中,许多类可能导致类加载器泄漏,因此类仍然保留在permgen中.
由此产生两个问题:
是否合理地说这样的问题更好地增加最大烫发大小并在必要时重新启动或者应该找到更高优先级的解决方案?
有没有更简单的方法来解决类加载器泄漏?
免责声明:我对Linux比较陌生.我讨论过将它放在SuperUser或ServerFault上是因为答案确实需要将Linux解释为系统(而不是特定的编程问题),但是我从Java开发人员的角度对此感兴趣,并且我认为这是一个特定的问题,因为我安装GlassFish的地方会极大地影响我的Java配置,最终影响应用配置.更不用说在其他网站上发布这个问题可能不会引起Java开发人员的任何关注,更多的是系统管理员,他们可能不太了解Java,无法充分考虑这个决定.
我正在尝试决定在哪里安装GlassFish,在我看来,我(实际上)有4个可行的选择:
/opt/glassfish//usr/local/glassfish//home/myUsers/glassfish/ (这是所有OGS文档在他们的例子中显示的内容)/home/ogs/glassfish (作为自己的用户,类似于有时设置Apache Web服务器的方式)我想知道专业人士(考虑到Linux如何区别对待这些目录的性质,FHS等)以及每种方法的缺点.
我已经读到安装它的安装/分区好处opt/.但是,我通常会安装第三方软件usr/local/,所以我对此作为一种策略有点不确定.
Oracle GlassFish Server(OGS)文档都演示了(但从未完全推荐)GlassFish安装在您的主目录(home/myUser/)下.
然后,我再次看到,安装守护进程类型的服务是相当普遍的(这是我想象的,我将使用GlassFish作为 - 我只启动它一次,它只用于日常维护或崩溃)作为他们的拥有用户(home/ogs/glassfish/).
我确定这个决定也受到我将如何使用GlassFish的影响,所以让我用一些限制来限定这个问题:
如果这些没有提供足够的具体信息来帮助做出这个选择,请询问,我可以更具体.
我想,当尘埃落定到一天结束时,我正在(或多或少)寻找一个矩阵,其中包含四个目录选项中的每一个(加上我省略的任何其他明显的选项)与他们各自的专业人员相比利弊.
我无法理解这两个平台的不同之处?两者似乎都提供了部署和管理应用程序的环境.首先,我认为应用程序服务器使用OSGi,我现在不这么认为,但我看到大型AS(jboss,glassfish,websphere等)使用OSGi.大局是什么?
谢谢
好的.这又是一个行业惯例问题.
Spring不需要像JBoss这样的Application Server.如果我们使用JMS等企业服务,我们可以使用RabbitMQ,ApacheMQ等独立系统.
我有一个Java程序/线程,我想部署到Application Server(GlassFish).该线程应作为"服务"运行,该服务在Application Server启动时启动,在Application Server关闭时停止.
我该怎么做呢?它实际上不是会话Bean或MDB.这只是一个主题.
我正在使用IntelliJ 14将Spring App部署到我的本地Tomcat 8安装(Windows).
我最近更改了一些文件名的字母大小写,似乎Tomcat的工作目录没有正确更新(可能是Windows不区分大小写的文件系统的错误).
如何使用IntelliJ清理Tomcat 8的工作目录?