`
大猫阿Ken
  • 浏览: 23068 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

weblogic9.x与xfire1.2.6冲突解决心得

阅读更多
前些日子用xfire1.2.6开发了一个webservice接口,主要功能是用来传输文件,接口定义如下:
public interface WSExport {
public byte[] export(String docPath,String xmlPath) throws Exception;
}

开发好服务端和客户端后,在tomcat6下面测试通过,以为一切ok了。但昨天做集成测试时,把客户端发布到weblogic9.1问题就来了。

问题一:

调用接口,报java.lang.NoSuchMethodError: javax.jws.WebService.portName()Ljava/lang/String 异常。

问题一原因:
经过在网上google+baidu,找到了问题所在,原因是weblogic里面用到包%WL_HOME%\server\lib\weblogic.jar里面有javax.jws.WebService这个类,版本跟xfire里面用到的包xfire-jsr181-api-1.0-M1.jar里面的类javax.jws.WebService版本不一致,而运行时默认优先加载的是weblogic.jar里面的类,所以引起冲突。

问题一解决方法:
把xfire的包xfire-jsr181-api-1.0-M1.jar复制到%WL_HOME%\server\lib\目录下,并且修改配置文件%WL_HOME%\common\bin\commEnv.cmd(linux下修改commEnv.sh)。
找到SET WEBLOGIC_CLASSPATH= 这行,把%WL_HOME%\server\lib\xfire-jsr181-api-1.0-M1.jar加在%WL_HOME%\server\lib\weblogic.jar前面,然后保存。重启weblogic问题一解决。


问题二:
问题一解决后以为万事大吉了,谁知调用接口时,新的问题来了。报:
java.lang.UnsupportedOperationException
        at weblogic.xml.stax.XMLStreamReaderBase.getTextCharacters(XMLStreamRead
erBase.java:487)

问题二原因:
找了半天没找到真正原因,只知道大家都说接口返回是byte[]就会出现以上异常。

问题二解决方法:
这是个不完美的解决方法,需要更改接口,把byte[]用base64进行编码,编码后byte[]变成了String,然后客户端收到String后用base64解码成byte[]。异常不再出现,成功将文件通过webservice传输到客户端。希望有高人提出更好的解决方法供大家讨论。

2
0
分享到:
评论
3 楼 zzl99mail 2009-11-25  
跟楼主同样的问题,按照该方法作了,还是不行??????????????、、
Error creating bean with name 'jsr181HandlerMapping' defined in ServletContext resource [/WEB-INF/cfg/cfg_spring/jfWebServiceXfire.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: javax.jws.WebService.portName()Ljava/lang/String;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
Truncated. see log file for complete stacktrace
java.lang.NoSuchMethodError: javax.jws.WebService.portName()Ljava/lang/String;
at org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations.getWebServiceAnnotation(Jsr181WebAnnotations.java:55)
at org.codehaus.xfire.annotations.AnnotationServiceFactory.create(AnnotationServiceFactory.java:173)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:356)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:337)
at org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping.processBeans(Jsr181HandlerMapping.java:108)
Truncated. see log file for complete stacktrace
>
<2009-11-25 上午11时14分49秒 CST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application '_appsdir_omds_dir'.
weblogic.application.ModuleException:
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:894)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:336)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
Truncated. see log file for complete stacktrace
java.lang.NoSuchMethodError: javax.jws.WebService.portName()Ljava/lang/String;
at org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations.getWebServiceAnnotation(Jsr181WebAnnotations.java:55)
at org.codehaus.xfire.annotations.AnnotationServiceFactory.create(AnnotationServiceFactory.java:173)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:356)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:337)
at org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping.processBeans(Jsr181HandlerMapping.java:108)
Truncated. see log file for complete stacktrace
>
<2009-11-25 上午11时14分49秒 CST> <Notice> <Log Management> <BEA-170027> <The server initialized the domain log broadcaster successfully. Log messages will now be broadcasted to the domain log.>
<2009-11-25 上午11时14分49秒 CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to ADMIN>
<2009-11-25 上午11时14分49秒 CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RESUMING>
<2009-11-25 上午11时14分50秒 CST> <Notice> <Server> <BEA-002613> <Channel "Default[1]" is now listening on 127.0.0.1:7001 for protocols iiop, t3, ldap, http.>
<2009-11-25 上午11时14分50秒 CST> <Notice> <Server> <BEA-002613> <Channel "Default" is now listening on 10.142.50.102:7001 for protocols iiop, t3, ldap, http.>
<2009-11-25 上午11时14分50秒 CST> <Notice> <WebLogicServer> <BEA-000331> <Started WebLogic Admin Server "AdminServer" for domain "omds_domain" running in Development Mode>
<2009-11-25 上午11时14分50秒 CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING>
<2009-11-25 上午11时14分50秒 CST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
2 楼 大猫阿Ken 2009-10-29  
最近实验了一下新的解决方法,如下:
上面遇到的两个问题其实都是包加载顺序问题,解决方法不需要上面这么复杂。只需要在工程的/WEB-INF/weblogic.xml文件中作修改,让运行时先加载工程目录下的包就可以了,weblogic.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:wls="http://www.bea.com/ns/weblogic/90"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
	<wls:context-root>/</wls:context-root>
	<wls:container-descriptor>
		<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
	</wls:container-descriptor>
</wls:weblogic-web-app>
1 楼 大猫阿Ken 2009-08-31  

相关推荐

    weblogic 9.x,10.x 线程调整

    在探讨WebLogic 9.x与10.x版本中线程池调整的相关知识点时,我们需深入理解线程池的概念、其在WebLogic服务器中的作用,以及如何根据具体应用需求进行有效的参数配置。以下是对WebLogic 9.x,10.x线程调整的详细解析...

    weblogic10配置

    本篇文章将深入探讨"weblogic10配置"这一主题,包括WebLogic 9.x与XFire 1.2.6之间的冲突解决心得以及WebLogic服务器上的中文乱码处理方法。 一、WebLogic 9.x与XFire 1.2.6冲突解决 1. **冲突原因**:WebLogic 9....

    weblogic 9.X license.bea 无限制版

    weblogic 9.X license.bea 无限制版

    weblogic9.x配置部署

    完成以上步骤后,WebLogic 9.x 已经配置了与 Oracle 数据库的连接,并部署了 Web 项目。这使得应用程序能够访问数据库并提供服务。在实际生产环境中,还可能需要进行安全设置、性能调整、监控等高级配置。务必确保在...

    Oracle Weblogic 10.X、11.X、12.X各个版本对应的系统、JDK、数据库版本

    接下来,WebLogic Server 11g(11.1.x)在操作系统支持上与10gR3类似,但对JDK的要求有所提升,一般建议使用JDK 1.6或1.7。在数据库兼容性方面,11g加强了与Oracle数据库11g的配合,同时也继续支持10g和其他主流...

    Weblogic 9.1.x 配置秘笈

    四、Weblogic 9.1.x 的常见问题与解决方案 1. 服务器启动失败:检查日志文件,排查错误信息,可能的原因包括配置错误、依赖库缺失等。 2. 性能优化:调整服务器参数,如增大内存分配,优化JVM参数,提升并发处理能力...

    WebLogic 12.2.1.4.0 2022年4月关键补丁

    在2022年4月发布的WebLogic 12.2.1.4.0的关键补丁,是Oracle针对该版本进行的安全性和稳定性更新,旨在解决已知的问题和潜在的安全漏洞,确保用户能够运行安全、高效的WebLogic实例。 1. 补丁的重要性:关键补丁...

    在myeclipse 9下配置weblogic10.x

    配置MyEclipse 9与WebLogic 10.x的连接是一项细致而重要的工作,它直接影响到开发效率和代码质量。通过上述步骤,你可以有效地搭建起开发环境,使得在MyEclipse中编写的应用能够无缝部署到WebLogic服务器上进行测试...

    linux下weblogic12.1.1.0安装与配置、搭建

    "Linux 下 WebLogic 12.1.1.0 的安装与配置" 在 Red Hat Enterprise Linux 环境下,搭建 WebLogic 12.1.1.0 需要完成以下步骤: 一、创建 weblogic 用户和用户组 首先,我们需要创建一个名为 weblogic 的用户和...

    Java系列:Window 10 安装 Weblogic 12.2.1.4.0并简单部署

    9. **监控和日志管理**:为了维护良好的运行状态,需要定期检查WebLogic Server的日志文件,以及利用WebLogic Server的管理控制台监控服务器性能和应用状态。 通过以上步骤,你将在Windows 10上成功安装并部署...

    weblogic 12.2.1.3.0.打补丁\补丁\和opatch最新包

    确保你已经下载了适用于WebLogic 12.2.1.3.0的正确补丁,并且该补丁与你的OPatch版本兼容。 以下是打补丁的基本步骤: 1. **准备环境**:确保你的WebLogic Server实例已经正常运行,并且你有管理员权限。关闭所有...

    将应用部署在weblogic中于axis2冲突的问题及解决方案

    "将应用部署在Weblogic中与Axis2冲突的问题及解决方案" 问题描述 在将应用部署到Weblogic Server 10.3时,出现了一个错误,抛出...同时,也可以通过在WEB-INF\lib目录下配置weblogic.xml文件来解决包冲突的问题。

    weblogic12.2.1.4 补丁包31537019

    Oracle WebLogic Server 12.2.1.4 2020年7月发布的累积更新补丁包 p31537019_122140_Generic 主要修复各种Bug和安全漏洞等问题 安装之前须先卸载老的补丁 遭到过攻击的服务器、域 建议删除域并重建

    Weblogic8.X+SQL SERVER2000安装及连接池配置指南

    在深入探讨Weblogic8.X与SQL SERVER2000的集成及连接池配置之前,我们首先需要了解一些基本概念和环境设置。 **Weblogic 8.X简介**:Weblogic Server是BEA Systems开发的一款企业级Java应用服务器,提供了高性能的...

    最新2018年7月WebLogic漏洞(CVE-2018-2893) 适用于weblogic12.2.1.3

    Oracle的高危远程代码执行漏洞(CVE-2018-2893),通过该漏洞攻击者可以在未授权的情况下远程执行任意代码。 受此漏洞影响的版本包括: ...解决方案: 1.控制T3协议的访问 2.升级到 jdk-8u20以上的版本 3.升级补丁

    使用eclipse通过weblogic开发简单的ejb应用(weblogic 10.x & ejb3.x)

    在本文中,我们将深入探讨如何使用Eclipse IDE与WebLogic Server 10.x版本结合,开发基于EJB 3.0规范的应用程序。EJB(Enterprise JavaBeans)是Java EE平台的核心组件,用于构建可扩展、可靠且安全的企业级应用程序...

    weblogic 9.x 与 apache 2.2.x 集成的 库文件mod_wl_22.so

    weblogic 与 apache 2.2.x 集成的时缺少一个库文件mod_wl_22.so ,本身带的是mod_wl_20.so,只能与 apache 2.0.* 整合。整合方法请google

Global site tag (gtag.js) - Google Analytics