【转】WAS 开发需要注意的一些细节

由于很多人都是在tomcat 下面开发的系统,然后才迁移到WAS上面去,所以就会出现这样那样的问题,导致很多代码因为不兼容又得做大量的修改。

根据我在工作的过程中总结了一些开发和部署的过程中碰见的一些WAS的问题。这些问题主要是解决WAS不兼容上面的一些经验,另外还有一些常见的开发部署中碰到的一些问题的解决方法,总结了一下,希望对各位开发同仁有用。
1、在was中基础数据类型和他的对象之间不能被隐式转换。如: 一个int类型的变量被赋值成一个Integer对象或者一个一个Integer直接对象和一个int类型的变量或常量进行比较等。 解决方法:在对象的后面显示的调用相应的转换方法。如Integer对象intValue()方法。

 

2、was中对三目运算符号?:的应用也不能被隐式转换,必须保证在:的两边的数据类型一致。如:true?"":Long 这种写法was不会给Long类型的对象自动加上toString()方法进行隐式转换。 解决方法:在对象Long的后面加上toString()方法。


3、was自带的1.5的jdk不能解析范型,jsp页面不能用任何范型。但是在java类中用范型然后用sun的1.5以上的jdk编译以后was是可以执行的。


4、was中对jsp标签的属性用常量赋值时不能用<%=常量%>的方式而应该去掉<%=%>。如:

<pg:pager items="<%=pageInfo.getTotalCount()%>"
    index="center"
    maxPageItems="<%= pageInfo.getPageSize() %>"
    maxIndexPages="10"
    isOffset="<%= true %>"
   url="<%="/approve/print!list.action"%>"
    export="offset,currentPageNumber=pageNumber"
    scope="request">
 <pg:param name="action" value="<%=actionName%>"/>
 <pg:param name="maxPageItems"/>
上面这段代码中url="<%="/approve/print!list.action"%>" 这行的代码会出错;页面异常:找不到标记属性 ×× 的标记属性信息。
解决办法: 应该写成url="/approve/print!list.action" 。


5、was中对jsp标签的属性用变量赋值时不能用<%=变量1+变量2%>的方式而应该定义新的变量来赋值。
页面异常:找不到标记属性 ×× 的标记属性信息。 解决办法: 将需要运算的变量采用一个临时变量运算完赋值之后,再进行输出。例如 <% 变量3=变量1+变量2%> <%=变量3%>


6、was字符集的设置
进入控制台的:服务器-》应用程序服务器-》运行的应用如:server1 -》Java 和进程管理 -》进程定义-》Java 虚拟机页面中的“通用jvm参数”的值设成“-Dfile.encoding=GBK -Ddefault.client.encoding=GBK”。


7.WebSphere升级到6.1.0.17所有struts2的程序都会发生Action找不到的情况。
解决方法如下,服务器>应用程序服务器>[选择 所使用的服务器]>Web 容器设置>Web 容器>定制属性,增加名称为“com.ibm.ws.webcontainer.invokefilterscompatibility”的定制属 性,值为true。  


8、WAS 出现如下异常: WARNING: Cannot set status. Response already committed.
WARNING: Cannot set header. Response already committed.
解决办法:was升级到6.1.0.17版本可以解决。


9、修改was的jsp编译jdk版本可以解决1、2、3类似的问题。 修改方法,找到发布之后的应用目录,修改对应的配置文件:
/IBM /WebSphere/AppServer/profiles/AppSrv01/config/cells/zd- 44bca248e33bNode01Cell/applications/web_war.ear/deployments/web_war /web.war/WEB-INF/ibm-web-ext.xmi文件中
加上<jspAttributes xmi:id="JSPAttribute_1" name="jdkSourceLevel" value="15"/>


10、myeclipse 配置websphere 调试环境
·      
a.  下载下websphere6.1安装,在安装的过程中要记住自己设置的node name和cell name.
·      

b.   启动eclipse,在window->preperences->myeclipse->application servers->websphere6.1  

点Browse...选择你eclipse的安装目录. 我是安装在D:/webshpere6.1 ,之后myeclipse会自动的将Profile Root Directory ,Node name,cell name设置好。你需要确认一下 Profile Root Directory 就是你的安装目录下Profiles目录下的一个文件夹。 我的是D:/webshpere6.0/profiles/AppSrv01 。 而node name和cell name它会设成以你的机器名命名的名字,应该将cell name改为Profiles RootDirectory下的installedApps目录(D:/webshpere6.0/profiles/AppSrv01 /installedApps)下的文件夹的名字我的是就是localhostNode01Cell,将node name改为cell name去掉后面的cell的名字。选中enable项。点Apply保存。 ·      

c  展开websphere6.1,选JDK,将JDK设置为webshpere6.1安装目录下的JDK(D:/webshpere6.0/java)。一定要设置成IBM的JDK要不websphere是不能运行的。 ·      

d  启动websphere(不是用eclipse,而是用websphere的启动服务器),选管理控制台,点服务器->应用服务器,选一个服务, 一般为server1。在故障诊断中选记录和跟踪->JVM 日志,修改两个文件名为console。保存,注销,停止服务。 ·      

e   在eclipse中新建自己的企业工程(一定要是企业工程)如果之前有web工程可以将该企业工程的web modle设置为该web project如没有就自己新建一个。 ·      

f  发布企业工程(不是web project)在第一次发布时要选Packaged Archive       

g   用eclipse或websphere工具启动websphere,进入控制台,应用程序->安装新的应用程序,点浏览在

/webshpere6.0/profiles/AppServ01/installableApps

下选自己发布的工程名的ear文件(你可能不是AppServ01)

然后next下去就可以了,唯一要注意的就是要设置web模块上下文根和要选上class 类文件和jsp的修改自动装载。

·      
h  退到控制台首页,应用程序->企业应用程序,选择自己发布的工程,点启动。注销,停止websphere。
·     
I   在eclipse中再点发布,删除刚发布的工程,再点add。。。选择企业工程,Exploded Archive。选Delete Remote。。。项。然后发布。以后就可以实时调试了。

注:要在websphere中调试一定要建企业工程,一般的web工程是不能的
我们在J2EE的开发过程中还会遇到很多问题,尤其是我们开发的产品需要考虑在不同的平台和中间件上运行的 时候,所需要注意的东西就更多。WAS相对于其他中间件来说,针对配置文件和代码的写法要更严格的检查,如果写法不符合规范,就会出现错误。
本文中提到的 一些问题的解决办法以及一些开发方法,是我在开发应用的时候碰到过的一些问题,经过一段时间的沉淀也积累了一些经验,希望对各位同仁在处理类似问题的时候 能有所帮助。在下只是抛砖引玉、班门弄斧,希望大家踊跃发言,批评指正。~_~

 

 

注:本文转自http://www.webspherechina.net/home/space.php?uid=201&do=blog&id=49516

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值