首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Weblogic+Axis兑现webservice

2012-07-04 
Weblogic+Axis实现webservice转自http://blog.csdn.net/xsailer/article/details/1763153前面讲了用tomcat

Weblogic+Axis实现webservice
转自http://blog.csdn.net/xsailer/article/details/1763153

前面讲了用tomcat+axis来实现webservice,而网上对于weblogic+axis实现webservice却不多,按照网上说的做却总是报错,不成功,所以我经过不停的试验,终于配置成功了weblogic+axis

首先我们下载一个weblogic8.1.3,jdk和axis的下载参照Tomcat+axis那片文章里的下载安装和设置

下载好后我们安装weblogic,一直按下一步即可

安装完成后运行Configuration Wizard来新建域配置,一直按下一步,直到输入UserName,Password and Description(我们这里都设置成weblogic),然后在按下一步直到完成

然后我们将下载的axis压缩包下的webapp目录下的axis目录拷贝到C:/bea/user_projects/domains/mydomain/applications下面

由于axis中的一些jar包和weblogic中的有冲突,所以要修改C:/bea/user_projects/domains/mydomain/startWebLogic.cmd文件,优先使用axis的jar,将其中的
set CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%/jre/lib/rt.jar;%CLASSPATH%;%WL_HOME%/server/lib/webservices.jar
改成
set CLASSPATH=%AXISCLASSPATH%;%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%/jre/lib/rt.jar;%WL_HOME%/server/lib/webservices.jar

set CLASSPATH=%CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%/jre/lib/rt.jar;%WL_HOME%/server/lib/webservices.jar(这里必须保证将AXISCLASSPATH加入了CLASSPATH环境变量中)
保存运行这个文件启动weblogic控制台,如下图


启动好之后打开ie,在url中输入http://localhost:7001/console,输入用户名和密码进入Weblogic Server Console


点击展开部署节点--点击WEB应用程序模块--然后点击旁边的部署新的新的应用程序模块,会出现选择web应用的窗口,如下图


选择相应目录下的web应用程序,我们选择axis,如下图


点击目标模块按钮,接着在出现的窗口中点击部署即可(这里我发现如果不在环境变量CLASSPATH中设置%AXISCLASSPATH%时,部署将报错)完成后如下图


这是我们可以点击测试选项中的链接,也可以在ie中输入http://localhost:7001/axis/,如果出现以下界面,说明配置成功


这时我们就可以按照tomcat+axis那篇文章所说的发布web服务了

遇到的问题
weblogic+axis的最大问题是2者间jar包的冲突,客户端调用web服务时会报NullPointerException错误,网上都说是axis的saaj.jar和weblogic的webservices.jar冲突,须将saaj.jar加在webservices.jar前面,我按网上这么加了也没用,后来我把整个AXISCLASSPATH都加到了最前面,就如我上面所说的那样,嘿,他就好了,我晕俄,网上的人也不知道是怎么成功的

还有一种说法就是在web-inf目录下加weblogic.xml,网上的人也没说要加到哪个web-inf下,我想想只有我的axis目录下有web-inf吧,就加他下面了,weblogic.xml的内容如下
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
这样也可以解决客户端调用web服务时会报NullPointerException的错误,但是我发现这样做的后果是点击axis的service的wsdl时出现无法显示页面。所以经过我不断的调试,只有像我前面说的那样修改startWebLogic.cmd中的set CLASSPATH项应该算是最完美的方法了,配这个东西的时候网上查了好久,都是千篇一律,说得没头没尾,所以说还是得自己去实践阿(实践是检验真理的唯一标准嘛)

注:在部署好的web应用程序的web-inf中加入weblogic.xml需要重新部署web应用程序
        修改了startWebLogic.cmd需重新执行startWebLogic.cmd,以便修改起作用

我在一个干净的winxp sp2,JDK1.4.2.05,weblogic8.1.3的环境下部署了axis1.4,和同事在家远程调用获得成功

相关程序安装目录
JDK        C:/j2sdk1.4.2_05
weblogic  C:/bea
axis1.4     C:/axis14(lib下有一些jar需另外当,老实说我也不知道哪些起了作用,只是把网上所说得涉及到的jar都找来了,嘿嘿)

相关环境变量设置
AXIS_HOME=C:/axis14
AXIS_LIB=%AXIS_HOME%/lib
AXISCLASSPATH=%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery-0.2.jar;%AXIS_LIB%/commons-logging-1.0.4.jar;%AXIS_LIB%/jaxrpc.jar;%AXIS_LIB%/saaj.jar;%AXIS_LIB%/log4j-1.2.8.jar;%AXIS_LIB%/xml-apis.jar;%AXIS_LIB%/xercesImpl.jar;%AXIS_LIB%/wsdl4j-1.5.1.jar;%AXIS_LIB%/activation.jar;%AXIS_LIB%/xmlrpc-2.0.jar

JAVA_HOME=C:/j2sdk1.4.2_05
CLASSPATH=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%AXISCLASSPATH%;

Path前加了%JAVA_HOME%/bin

热点排行