西西河

主题:请教一个关于JAVA WEB SERVICE的问题 -- 东湖珞珈

共:💬18 🌺2
分页树展主题 · 全看首页 上页
/ 2
下页 末页
  • 家园 请教一个关于JAVA WEB SERVICE的问题

    我们这边是用JAVA,客户那边是.NET。我是用SUN的JWSDP2.0(WS-COMPILE)来编译JAVA代码,生成WSDL文件。现在一个问题是:如果JAVA这边是简单的类、或者类的数组都没有问题,都可以生成正确的WSDL;但是如果是类里面还有类,或者类的数组里面还包含一个类的数组就乱了。

    有没有哪位有类似的经验?

    有没有谁用过JBOSS WEB SERVICE?

    先谢过!

    关键词(Tags): #JAVA#WEB#SERVICE
    • 家园 看一下namespace

      看一下生成的wsdl的schema部分的namespace是否正确,如果用soap的话看一下返回的全文,return是否设为正确的类型。

      我最近也在做一个php类似的东东,有心得一起来切磋一下哈。

    • 家园 我想你的意思是

      .net client没法读懂你java side的WSDL吧。

      我做的和你刚好相反 .net 做server,JAVA(J2ME actually)做client。我想问题都是一样,俩边的stub generator只能尽可能的把WSDL里的type map成自己language里的type。至于对方有自己没有的complex type,它就没辙了。除非你自己implement一个先。至于nested type我想应该是可以的,只要里面的type都是可以map的。

      try something simple like this:

      class C1

      {

      public int i;

      public C2 c2;

      }

      class C2

      {

      public string s;

      }

      • 家园 是这样的

        我的JAVA CODE被编译后生成了WSDL和其他XML的文件。

        我把最后的WAR装到JBOSS J2EE服务器上后,访问那个端口,看到的信息就不对了。

        到这一步并不涉及.NET,就算WEB客户是JAVA也不成。

        所以, 问题是WS-COMPILE没有办法正确理解类的嵌套。如果我们改变设计,没有类的数组里面再嵌类的数组,全部改成一层,就是没有嵌套的,WS-COMPILE生成的WSDL代码就是正确的。

        • 家园 干嘛不换一个工具试验?

          大把呀,比如weblogic的,或者一些开源包的,都有这个生成wsdl的工具。sun做的那个是最难用的吧,我一直没学会,呵呵。等我用xfire做一个这种嵌套的看看,不过我感觉为了降低复杂程度确实不应该使用这种嵌套关系。上次做一个类似的东西,也是因为类似的原因,最后换了协议才支持。

          • 家园 关于XFire

            其实我用的MYECLIPSE里就有XFIRE1.1,但是我BYPASS了它,因为我们原来是用基于AXIS的,现在的这一摊子就是这样,JBOSS 4.0.3的WEB SERVICE是基于AXIS的,下一步公司的决定是要用JBOSS 4.0.4,而从这个版本其JBOSS有自己的WEB SERVICE。

            请问你用得XFIRE是什么版本?我刚刚装了一个XFIRE1.2的PLUG-IN, 想把你生成的那个WSDL文件还原成JAVA代码,但是失败了。

            关键词(Tags): #XFIRE#WSDL
            • 家园 我贴的只是一部分,就是类型那部分

              你还原恐怕没搞全吧。xfire的版本是1.2.3 。

              axis其实问题蛮多的,而且速度太慢,和xfire比差了1个数量级。如果是真的准备用ws来做remote协议(我看你的帖子猜测你是这样用,而不是只提供一些服务封装),你要好好考虑考虑。

              去年这个时候我就是加班熬夜搞了2天,原因就是axis在hp unix的某个版本上会出错,最后换成weblogic的实现重写,还被客户严重bs了几天。从那以后我就恨死axis了。

              xfire有2个ant任务,实现 wsdl和java代码的互相转换。

              另外我觉得前面那个大拿的什么从xml来设计规范不可取, 太重量了,只适合少数钱烧的狟的公司搞。 只要考虑好接口设计,从代码接口export到wsdl是最快捷的方式,而且不考虑日期类型的话,基本上各种语言之间交换问题不大。当初。net的webservice为啥一出来就把人镇了,人家根本就不用你关心什么wsdl,直接一个标签就搞定,就是这个路子。ws的设计应该是针对接口的设计,不是针对xml schema的,xml不是ws的核心,那只是一个表述格式。

              ws刚出来的时候,几个厂商走的就是ejb的路子,太规范,太重,几大厂商叫的欢,开发人员苦不堪。所以现在什么restful 什么xml-rpc之类的东西才会一个劲的跑出来。现在的ws已经不能再和几个规范等同起来来了。

              我曾经想考一下sun的ws认证,就是想系统的学习一下,结果发现各种所谓规范下面是比ejb还dirty的东西,放弃了,有个概念,能用现成的东西解决问题就好了。那些xx的,都是厂商的商业博弈。

        • 家园 这俺就不懂了

          不过按道理web service的spec是应该支持类的嵌套的啊。你说WSDL就乱了,乱成什么样了,方便贴一个看看?

    • 家园 怎么个乱法?不太明白你的意思

      从设计的角度来讲,如果你的用户端是NET,服务器端是JAVA,用工具生成WSDL文件似乎不太可取。一般推荐的方式是先设计确定XML Schema和WSDL,然后从WSDL生成你JAVA文件。基本思想是要用XML Schema和WSDL作为Interface contract,成为不同Application之间的Mediation Layer。各个语言对基本数据类型的设定(language bindings)不同,应该避免用JAVA的数据类型来套其它语言。

      可以看看Java Web Services Blueprints http://java.sun.com/blueprints/guidelines/designing_webservices/

分页树展主题 · 全看首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河