本周完成了Aix上bluecare从WAS7.0迁移到WAS 8.5.5.0,操作过程中遇到一些问题,操作步骤予以记录,供各位看官吐槽。

环境介绍:

Server: Aix 6100-08

MiddleWare: WAS 7.0.0.27

WAS8.5.5.0

实施目的:

bluecare应用从原来的WAS7.0.0.27上迁移到WAS 8.5.5.0上。

实施步骤:

安装WAS 8.5.5.0

安装步骤不予详述,该环境需要使用非root进行安装,查看WAS 8.5的InformationCenter,关于非root安装有相关介绍,值得注意的是,root安装InstalMgr需要运行IManager下面的install,而非root用户安装运行IManager下面的userinst

迁移概要文件

考虑使用wct工具进行迁移。用Xmanger连到AIX上,运行\AppServer\bin\ProfileManagement下面的wct.sh。嘿,图形化界面没出来,出来一堆报错信息。根据提示的报错信息,查看eclipse的包依赖,运行命令如下,

 

-bash-3.00$ ldd /home/ncosys/.ibm/WebSphere/AppServer/configurations/WCT85/org.eclipse.osgi/bundles/55/1/.cp/libswt-pi-gtk-3659.a

/home/ncosys/.ibm/WebSphere/AppServer/configurations/WCT85/org.eclipse.osgi/bundles/55/1/.cp/libswt-pi-gtk-3659.aneeds:

Cannot find libgdk-x11-2.0.a(libgdk-x11-2.0.so.0) 

Cannot find libglib-2.0.a(libglib-2.0.so.0) 

Cannot find libgtk-x11-2.0.a(libgtk-x11-2.0.so.0) 

/usr/lib/libc.a(shr_64.o)

Cannot find libgobject-2.0.a(libgobject-2.0.so.0) 

Cannot find libpango-1.0.a(libpango-1.0.so.0) 

Cannot find libgdk_pixbuf-2.0.a(libgdk_pixbuf-2.0.so.0) 

Cannot find libgthread-2.0.a(libgthread-2.0.so.0) 

/usr/X11R6/lib/libX11.a(shr_64.o)

/usr/X11R6/lib/libXtst.a(shr_64.o)

/unixs

/usr/lib/libcrypt.a(shr_64.o)

/usr/lib/libiconv.a(shr4_64.o)

/usr/lib/libIM.a(shr_64.o)

/usr/lib/libpthreads.a(shr_xpg5_64.o)

/usr/X11R6/lib/libXext.a(shr_64.o)

/usr/lib/libgaimisc.a(shr_64.o)

/usr/lib/libgair4.a(shr_64.o)

/usr/lib/libodm.a(shr_64.o)

-bash-3.00$

,有几个依赖包没找到,于是将缺少的包一一打上,再次检测依赖包,报错消失。

PS:该问题在WAS 8.5的reabook 81页,有相关说明。

Important: In WebSphere Application Server V8 and later versions, IBM AIX64-bit

systems can use GUI-based tools. However, AIX requires that theGNU Toolkit (GTK) be

installed to run the GUI. If you do not have the GTK installed,you receive an Eclipse error

when trying to launch the GUI. For details about configuring AIXto support the GUI, refer

to the product information center at this website:

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.installa

tion.nd.doc/ae/tins_aixsetup.html

 

再次运行wct.sh,图形化界面是出来了,这你能用吗?

下图,

wKiom1NZ1XiDUyMJAAYuPhzPtOU880.jpg

看报出来的错好像是说gtk-pixbuf这个包在load的时候权限不够,到目录相关目录下查看gtk-pixbuf,权限为r—r—r。chmod 755 gtk-pixbuf。再次wct.sh,报错信息消失了,不过图形化界面还是乱码。查看机器支持的语言。wKiom1NZ1Z6SAepLAAGhzj_2OC8718.jpg

猜测是缺少语言包导致,问题先放着,完成迁移再处理这个问题。

使用命令行完成迁移

备份旧的profile

-bash-3.00$ ./WASPreUpgrade.sh/opt/IBM/backup /opt/IBM/WebSphere/AppServer -oldProfile AppSrv01

8.5.5.0上创建新的profile

-bash-3.00$ ./manageprofiles.sh -create-profileName AppSrv01 -profilePath/opt/IBM/WebSphere/AppServer8550/profiles/AppSrv01 -templatePath/opt/IBM/WebSphere/AppServer8550/profileTemplates/default -hostName******

利用备份的信息,迁移到新创建的profile上。

-bash-3.00$./WASPostUpgrade.sh/opt/IBM/backup-oldProfile AppSrv01-profileName AppSrv01

 

命令运行完成。

调试程序

登陆控制台,应用程序、数据源、各种配置都在。

通过浏览器访问,http://hostname:9080/bluecare

相关的数据没出的来

查看SystemOut.log

[14-4-2311:31:36:043 CST] 00000089 StrutsSpringO Ecom.opensymphony.xwork2.util.logging.commons.CommonsLogger fatal Error creatingbean with name 'performanceDao' defined in URL[wsjar:file:/opt/IBM/WebSphere/AppServer8550/p

rofiles/AppSrv01/imsdata/imslib/dne-kernel-2.3.1-beta.jar!/dne-platform.xml]:Error setting property values; nested exception isorg.springframework.beans.PropertyBatchUpdateException; nestedPropertyAccessExceptions (1) are:

PropertyAccessException1: org.springframework.beans.MethodInvocationException: Property 'dataSource'threw exception; nested exception is java.lang.IllegalArgumentException:Property 'dataSource' is required

[14-4-2311:31:36:134 CST] 00000089 DispatcherE com.opensymphony.xwork2.util.logging.commons.CommonsLogger errorDispatcher initialization failed

报错还算明显,应该是数据源库的驱动,迁移的过后找不到了。

果断从老的WAS路径下拷贝过来。

继续通过浏览器访问,数据还是没出来,

再次查看SystemOut.log

[14-4-2313:25:37:711 CST] 0000009e webappE com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E:[Servlet 错误]-[com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor]:java.lang.VerifyError: JVMVRFY

013class loading constraint violated;class=org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint,method=getSourceLocation()Lorg/aspectj/lang/reflect/SourceLocation;, pc=0

atjava.lang.J9VMInternals.verifyImpl(Native Method)

atjava.lang.J9VMInternals.verify(J9VMInternals.java:93)

atjava.lang.J9VMInternals.initialize(J9VMInternals.java:170)

at org.springframework.aop.aspectj.AspectJAroundAdvice.lazyGetProceedingJoinPoint(AspectJAroundAdvice.java:76)

atorg.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:63)

atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)

atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

atcom.sun.proxy.$Proxy35.getAppByAid_Ver(Unknown Source)

[14-4-2313:25:37:711 CST] 0000009e webappE com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E:[Servlet 错误]-[com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor]:java.lang.VerifyError: JVMVRFY

013class loading constraint violated;class=org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint,method=getSourceLocation()Lorg/aspectj/lang/reflect/SourceLocation;, pc=0

atjava.lang.J9VMInternals.verifyImpl(Native Method)

atjava.lang.J9VMInternals.verify(J9VMInternals.java:93)

at java.lang.J9VMInternals.initialize(J9VMInternals.java:170)

atorg.springframework.aop.aspectj.AspectJAroundAdvice.lazyGetProceedingJoinPoint(AspectJAroundAdvice.java:76)

atorg.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:63)

atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

atcom.sun.proxy.$Proxy35.getAppByAid_Ver(Unknown Source)

[14-4-2313:25:37:707 CST] 0000009e filterE com.ibm.ws.webcontainer.filter.FilterInstanceWrapper doFilterSRVE8109W: 未捕获到过滤器struts2抛出的异常:java.lang.VerifyError:JVMVRFY013 class loading constraint violat

ed;class=org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint,method=getSourceLocation()Lorg/aspectj/lang/reflect/SourceLocation;, pc=0

atjava.lang.J9VMInternals.verifyImpl(Native Method)

atjava.lang.J9VMInternals.verify(J9VMInternals.java:93)

at java.lang.J9VMInternals.initialize(J9VMInternals.java:170)

atorg.springframework.aop.aspectj.AspectJAroundAdvice.lazyGetProceedingJoinPoint(AspectJAroundAdvice.java:76)

atorg.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:63)

atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

atorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

atcom.sun.proxy.$Proxy35.getAppByAid_Ver(Unknown Source)

atcom.dne.ims.security.MobileAccessAuthenticaation.authenticate(MobileAccessAuthenticaation.java:43)

atcom.dne.core.security.mobile.HeaderAuthentication.authentic(HeaderAuthentication.java:47)

at com.dne.ims.security.MobileAccessInterceptor.doIntercept(MobileAccessInterceptor.java:105)

atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

atcom.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)

atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

atcom.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)

atorg.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)

atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

atcom.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

atcom.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)

atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

atcom.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)

at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

atcom.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)

 

报了一些杂七杂八struts2、filter,classloader ,aop相关的报错。感觉像是加载的jar包有问题,但是无法看到具体的jar,或者jar冲突等报错。顺带看了下ffdc,没有记录到任何信息。

既然怀疑是类加载,那我可能考虑打开WAS里面的详细类加载记录,或者开trace,看看有什么信息没,烦!

算了,先www.google.com搜之,没法,搜到了

http://www.liferay.com/zh/community/wiki/-/wiki/1071674/WebSphere%208%20tips

 

看完明白了,详细信息参考url。赶快把补丁下下来,将版本升级到8.5.5.1(目前的最新版本,8.5.5.2的补丁在本月28号出)

再次访问,OK了,测试应用没问题!

迁移概要文件(补充)

迁移算完成了,但是之前还遗留了一个问题,现在可以解决一下了,先将AIX的的语言包,支持utf-8的包打上。

wKioL1NZ1ZOBKzTKAAC60-c3z0U717.jpg

再次运行wct.sh,

wKioL1NZ1avxHj_eAAJsQ08n6EE664.jpg

很好,打完收工!