1

我有一个客户,他已经在生产中拥有一些应用程序,因此已经就下一个项目的生产环境做出了一些决定:

  • Sun iPlanet 6.1 SP7(带 Apache)
  • JDK 1.6
  • 甲骨文网络逻辑 10 MP3
  • 甲骨文 10g
  • 1024 位 SSL

他们还为网络应用制定了一些企业标准:

  • 雄猫
  • 支柱
  • 兼容 Safari、Firefox、IE6、IE7

我还被告知,这个应用程序可能不需要完整的 Java EE 5 环境(可能只有一个 Web 容器),但需要通过客户端 EJB 等与托管在单独 weblogic 实例上的应用程序进行通信,并执行各种 Web对其他公司服务的服务调用。

我的任务是为这个新团队(规模很小,可能只有 2 或 3 个人,包括我在内,但可能会在未来几个月内增长)做出一些决定。我想创建一个人们可以使用他们喜欢的 IDE 并在 localhost 上拥有良好开发体验的地方,但仍然可以顺利地在测试环境中进行部署,然后再部署到生产环境中。我的想法是,在本地工作站上 http 很好,但集成测试服务器应该看起来与生产服务器完全相同,并且所有流量都应该是 https 以确保我们能够准确地描述 prod 将是什么。

知道开发人员的本地工作站将高度多样化,并且可能在他们的本地工作站上运行 Mac OS X 10.6 (Snow Leopard) 或 Windows 7,但还需要指定一个通用的测试服务器:什么技术堆栈会给我们从本地开发到测试再到生产的顺利路径?

编辑:对不起,当我说技术堆栈时,我的意思是例如 Ant + JBoss + Tomcat + Oracle XE vs. Maven + Geronimo + Derby。基本上是我们需要在每台开发机器和测试服务器上安装的具体规范实现列表,为我们提供灵活的开发环境,并顺利过渡到测试和生产环境。

EDIT2:可能值得一提的是,这个应用程序,如果它需要保留任何信息(我假设是这种情况),无论它是什么绝对不会复杂。它很可能类似于基本的产品数据库。

4

3 回答 3

4

我会去:

  1. Hudson用于夜间构建(或每次签入)
  2. 用于源代码控制的MercurialSubversion(适用于 Windows 和 Mac)
  3. 春天,春天,春天。是的,我是认真的,Spring 解决的问题不仅仅是依赖注入;如安全、批处理、事务处理、系统集成。
  4. 用于 ORM 的EclipseLink 。许多高级特性(Hibernate 缺乏的)经常救了我(比如体面的存储过程支持)。
  5. 像Jetty、TomcatResin这样的轻量级容器。如果您使用GeronimoJBoss之类的重度缓慢的东西,您将犯下团队杀戮。
  6. DeltaWalker用于合并/差异工具(同样适用于所有平台)。
  7. 如果您要使用高级数据库功能,请选择OracleXE(和SQLDeveloper)。两者都是不错的工具。如果没有,那么像H2Derby这样的轻量级的东西就可以了。
  8. JUnit(或TestNG)Mockito用于单元测试/模拟。
  9. 请不要使用Struts。说真的,至少使用Struts2或者最好是JSF2、StripesGWT之类的东西。
  10. JTrac、RedMineFogBugz这样的不错的 bugtracker
  11. Selenium用于集成测试
  12. 代码质量声纳

如果您打算使用不同的 IDE,那么Maven可能是一个好主意,因为它允许从 pom.xml 配置每个 IDE(在 IntelliJ/NetBeans 中效果很好)。但我能给你的最好的建议就是这个。

  • 选择你已经知道并有经验的东西。您不会在一夜之间从 Struts 过渡到 JSF2。
  • 获得你能得到的最好的工具,真正免费的东西并不总是可行的(尽管经常是这样)。

快乐的黑客

于 2009-12-16T16:58:41.040 回答
1

当您说“技术堆栈”时,真的不清楚您到底在问什么,您是指服务器、库、构建工具吗?无论如何,这里有一些轻率的建议:

  • Hudson 持续集成
  • 除非你真的非常需要它,否则避免使用 maven。它以声明性依赖和约定优于配置的承诺像警笛一样引诱你,但实践与理论有很大不同
  • 尽可能优先使用 Spring,而不是标准 Java SE/Java EE API。除了更简单的 API 之外,它还促进了可测试性和 AOP 特性,这比直接使用 AspectJ 容易得多。当然,它也提供了支持松耦合的依赖注入
  • 用于 ORM 的 Hibernate,或者如果您的持久性要求非常简单,Spring-JDBC 可能就足够了
于 2009-12-16T15:11:05.203 回答
0

测试环境应该完全复制生产。还要在测试环境上进行性能测试。如果需要考虑硬件并且需要限制集群中的服务器数量,那么在测试中创建较少数量的服务器,但要复制与产品相同的环境,例如 iplanet (apache ) + weblogic + oracle db 等等....

就本地环境而言,您可以使用 Tomcat(因为您只需要 Web 容器),对于 ejb 客户端,您可以捆绑 jar 并进行远程调用(如果您正在对某个远程应用程序进行远程调用)。如果您正在通过本地 ejbs 进行本地调用,那么您将不得不在本地机器上使用 weblogic 进行开发。

尝试使用相同的 IDE(尽管这主要取决于开发人员的选择)。就操作系统而言,这无关紧要,因为如果您使用的是兼容的 IDE,您将仅从该 IDE 构建代码。

还要确保 IDE 与 tomcat(如果您使用它)或 weblogic 紧密结合,以便在调试模式下运行代码。

一件非常重要的事情,首先决定代码结构,然后在版本控制中签入,以便用户从任何 ide 签入/签出相同的结构。因此,所有开发人员共享相同的结构。在每个版本中分支 cvs 或版本控制中的代码,然后从 head 签出。使用单个构建文件并维护一个设置文档以在本地机器上构建环境也非常重要。关于使用框架,请选择您在编码和维护方面最熟悉的框架。这样您将减少代码中的错误数量。现在大多数人使用 Spring/Hibernate 组合,但这取决于它是否适合您的项目。希望这可以帮助。

于 2009-12-16T15:07:12.757 回答