如何判断应用能否移植? 让人越来越陌生的JavaEE规范

       应用能不能移植到TongWeb上,主要看应用采用的JavaEE规范。而如今应用开发大量采用spring、hibernate等开源框架,很多人逐渐不了解底层的JavaEE规范,我们可以从以下几方面来了解应用采用的JavaEE规范。以常用web应用为例:

 一、通过应用的web.xml来判断

J2EE 1.4规范的web.xml文件头:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation=http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd  version="2.4">

JavaEE5规范的web.xml文件头:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd  version="2.5">

JavaEE6规范的web.xml文件头,但web.xml在JavaEE6规范的应用中是可以没有的。

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0" metadata-complete="false">

JavaEE7规范的web.xml文件头,但web.xml在JavaEE7规范的应用中是可以没有的。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"   metadata-complete="false">

JavaEE8规范的web.xml文件头,但web.xml在JavaEE8规范的应用中是可以没有的。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"  metadata-complete="false">

二、通过应用采用的JDK版本来判断

JavaEE规范

JDK版本

J2EE 1.4

最低JDK1.4版本

JavaEE5

最低JDK5.0版本

JavaEE6

最低JDK6.0版本

JavaEE7

最低JDK7.0版本

JavaEE8

最低JDK8.0版本

三、通过应用服务器版本来判断,以tomcat为例:

JavaEE规范之web规范

tomcat版本

J2EE 1.4 web规范

tomcat5.x

JavaEE5 web规范

tomcat6.x

JavaEE6 web规范

tomcat7.x

JavaEE7 web规范

tomcat8.x

JavaEE8 web规范

tomcat9.x

        通过了解应用支持的应用服务器版本可判断采用的JavaEE规范。JavaEE规范理论上向下兼容。若应用可以在tomcat8上运行,则肯定说明应用没有采用JavaEE8规范,但反之并不成立,应用运行在tomcat9上并不能说明应用采用了JavaEE8规范。

四、通过JavaEE的javadoc文档中注明的规范版本。

此方式仅适合移植出现问题时参考应用代码,并不适合移植前查看应用所有代码。

只有在移植时可看到对该API是否支持
java.lang.IllegalStateException: HttpServletRequest.changeSessionId is undefined. Are you using a Servlet 3.1+ environment?
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)

五、通过常用开源框架对JavaEE规范的支持要求来判断,如下Spring Boot。

六、了解应用用了哪些与应用服务器相关的接口。

        应用尽量不要用与应用服务器绑定的代码,这样影响可移植性。 例如:hibernate提供支持weblogic和websphere的全局事务接口,如:org.hibernate.transaction.WeblogicTransactionManagerLookup和org.hibernate.transaction. WebSphereTransactionManagerLookup。这时就需要修改hibernate配置,改用TongWeb的全局事务接口。

        有些还采用了一些应用服务器特有的硬编码,如:import  weblogic.wtc.jatmi.* ,这种情况如果要移植到TongWeb上只能通过修改应用代码来完成。

总结:

       通过以上六点基本可以判断出应用是否适合移植到TongWeb上。但需要说明的是不同应用服务器之间有差异、JDK和JavaEE规范并不能100%向下兼容,所以在移植时多多少少需要做些改动。

       JavaEE规范:Java Platform, Enterprise Edition (Java EE) | Oracle Technology Network | Oracle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值