前面讲了用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项应该算是最完美的方法了,配这个东西的时候网上查了好久,都是千篇一律,说得没头没尾,所以说还是得自己去实践阿(实践是检验真理的
唯一标准嘛0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="" align="absmiddle" border="0">)
注:在部署好的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