2007-08-21

weblogic8.1下配置xfire开发webservice环境

关键字: weblogic xfire
配置步骤:

一、 工具准备:

Eclipse3.2

Myeclipse5.0

Weblogic8.1

开发环境:

windows XP

jdk1.3
eclipse3.2.1 + myeclipse5.0
weblogic 8.1 sp2(独自运行jdk1.4)



二、类包准备:

Qname.jar 下载地址:http://docs.codehaus.org/download/attachments/27836/qname.jar?version=1



三、 Weblogic8部署注意地方

A、 WebLogic 8 支持的是 J2EE 1.3,也就是 Servlet 2.3 规范。若在 MyEclipse 中建立 Web Project 时选择了 J2EE 1.4[default],在部署的时候就会出现异常,提示部署描述符 web.xml 是畸形的,也就是未通过 DTD 检验。因为 J2EE 1.4 使用的是 Servlet 2.4 规范,这直接体现在 web.xml 部署描述符的头部引用中。这就是有些朋友遇到的,部署在 Tomcat 和 JBoss 中能够运行的 JSP 程序,部署到 WebLogic 8 就无法运行的原因之一。如下图:



Servlet 2.3 规范生成的 web.xml 头部:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3/  /EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
...
</web-app>


Servlet 2.4 规范生成的 web.xml 头部:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
...
</web-app>


B、 解决这个问题,需要将 WebLogic 升级到 9.2 版本;或者使用 J2EE 1.3。

C、 如果使用继续使用weblogic8.1的,则需要对weblogic自带的weblogic.jar包的xml命名包替换成:Qname.jar。否则web启动时会报错。服务启动不了。

D、若在上一个问题选择了 J2EE 1.3 进行开发后,在部署时会出现另外的异常,提示“Unsupported major.minor version 49.0”—— 又是版本问题,这次是由于 JDK 版本不支持造成的。WebLogic 8 不支持 JDK 1.5,由 JDK 1.5 编译的程序无法部署到只支持 JDK 1.4 的服务器上运行。解决的办法也有两个:用 JDK 1.4 重新编译;或者换用支持 JDK 1.5 的服务器,也就是升级到 WebLogic 9.2。



四、 开始配置:

1、 建立webservice项目时,需要选择J2EE1.3,不能选择J2EE1.3[default]。

2、 默认下一步。

3、 进入Project Library Configuration页面,默认选择MyEclipse Libraries类包。

下面提供的选择项中,在原来的基础上,把Xfire1.1 HTTP Client Libraries也选上。

4、 单击“Finish”按钮

5、 单击“New Web Service”按钮。建立新web服务端。

6、 进入接口定义页面。



填完。点击“Finish”按钮。





7、则可以查看到“WebRoot->WEB-INF”目录下存在web.xml文件,样式如下
    <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <servlet>

    <servlet-name>XFireServlet</servlet-name>    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>

    <load-on-startup>0</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>XFireServlet</servlet-name>

    <url-pattern>/servlet/XFireServlet/*</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>XFireServlet</servlet-name>

    <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

  </web-app>

7、 进入根目录下“Web Services”存在“webservice.xml”文件。其内容:
      <beans xmlns="http://xfire.codehaus.org/config/1.0">

        <service>

         <name>xxx</name>

       <serviceClass>xxxx</serviceClass>

<implementationClass>xxxx</implementationClass>

       <style>xx</style>

       <use>xx</use>

       <scope>xxx</scope>

    </service></beans>

8、 在“WebRoot->WEB-INF->lib”目录加入包:Qname.jar

9、 在weblogic启动命名文件:startWeblogic.xml文件中加上该包的执行路径。

……….

set CLASSPATH=D:\qname.jar;

…….







12、部署工程。



13、配置完成后选择“OK”。部署成功。

14、启动服务器器。可以在对应的IE页面地址栏输入:

http://loaclhost:7001/services/testservice?wsdl

如有现时xml格式的内容,则表明成功,否则需要检查上述步骤是否出正常。
评论
FAT0708 2008-03-27
还有你的服务端xfire是用的哪个版本,我用xfire1.2.6在weblogic706里还是报jdk版本问题,在eclipse里已经编译1.4兼容了啊。没办法,客户一直用weblogic706,郁闷啊,楼主有办法吗?
FAT0708 2008-03-27
楼主客户端怎么搞?
jnn 2007-09-18
VerRan 写道
楼主好,我看了你发了好几篇关于Xfire的文章,感觉很好。自己刚开始接触WebService,心理有个疑问:XFire在webService的开发中他出现的必要性是什么啊,没有他似乎也可以很方便的开发(我用Jbuilder开发觉得还是很简单的)。
如果你要做用Java做Web Services的开发,就需要完成下面几件事情。
一个是 Java Class到WSDL以及WSDL到Java Class的映射。
另一个是如何把SOAP消息转换成为Java Object以及把Java Object转换成为SOAP消息。
Xfire就是帮你做了上面这些事情。
BTW, 现在XFire已经升级到CXF了,你可以从CXF开始学习。

升级移植文档:
http://cwiki.apache.org/CXF20DOC/xfire-migration-guide.html

中文论坛:
http://groups.google.com/group/cxf-zh
VerRan 2007-09-11
楼主好,我看了你发了好几篇关于Xfire的文章,感觉很好。自己刚开始接触WebService,心理有个疑问:XFire在webService的开发中他出现的必要性是什么啊,没有他似乎也可以很方便的开发(我用Jbuilder开发觉得还是很简单的)。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

ioriyagami808
搜索本博客
最近加入圈子
存档
最新评论