西西河

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

共:💬18 🌺2
分页树展主题 · 全看首页 上页
/ 2
下页 末页
      • 家园 对于全新的系统

        完全可以向你那样设计。但是现在这套JAVA的系统已经运行不是一天两天了,如果CLIENT也是JAVA的,类里面套类根本不是问题。

        我现在已经试验过好几个,最新的是NETBEAN的最新版本+ JBOSS组合,结果也是一样。

        我说的乱了是说只能看到最外面一层的结构,如果里面有套着其他类就看不到了。

        • 家园 用xfire做了一个,嵌套嵌套的,完全没问题

          你可以看这段生成的wsdl,不明白你乱是什么意思?

          根据java代码生成这种嵌套的wsdl,是非常简单的事情,用其他客户端访问也没问题。

          <xsd:complexType name="Book">

          &#8722;

          <xsd:sequence>

          <xsd:element minOccurs="0" name="author" nillable="true" type="xsd:string"/>

          <xsd:element minOccurs="0" name="b1" nillable="true" type="ns1:b"/>

          <xsd:element minOccurs="0" name="d1" nillable="true" type="ns1:ArrayOfD"/>

          <xsd:element minOccurs="0" name="isbn" nillable="true" type="xsd:string"/>

          <xsd:element minOccurs="0" name="title" nillable="true" type="xsd:string"/>

          </xsd:sequence>

          </xsd:complexType>

          &#8722;

          <xsd:complexType name="b">

          &#8722;

          <xsd:sequence>

          <xsd:element minOccurs="0" name="c" nillable="true" type="ns1:ArrayOfC"/>

          <xsd:element minOccurs="0" name="yyy" nillable="true" type="xsd:string"/>

          </xsd:sequence>

          </xsd:complexType>

          &#8722;

          <xsd:complexType name="ArrayOfC">

          &#8722;

          <xsd:sequence>

          <xsd:element maxOccurs="unbounded" minOccurs="0" name="c" nillable="true" type="ns1:c"/>

          </xsd:sequence>

          </xsd:complexType>

          &#8722;

          <xsd:complexType name="c">

          &#8722;

          <xsd:sequence>

          <xsd:element minOccurs="0" name="abc" nillable="true" type="xsd:string"/>

          <xsd:element minOccurs="0" name="xyz" nillable="true" type="xsd:string"/>

          </xsd:sequence>

          </xsd:complexType>

          &#8722;

          <xsd:complexType name="ArrayOfD">

          &#8722;

          <xsd:sequence>

          <xsd:element maxOccurs="unbounded" minOccurs="0" name="d" nillable="true" type="ns1:d"/>

          </xsd:sequence>

          </xsd:complexType>

          &#8722;

          <xsd:complexType name="d">

          &#8722;

          <xsd:sequence>

          <xsd:element minOccurs="0" name="foo" nillable="true" type="xsd:string"/>

          <xsd:element minOccurs="0" name="yuill" nillable="true" type="xsd:string"/>

          </xsd:sequence>

          </xsd:complexType>

          &#8722;

          <xsd:complexType name="ArrayOfBook">

          &#8722;

          <xsd:sequence>

          <xsd:element maxOccurs="unbounded" minOccurs="0" name="Book" nillable="true" type="ns1:Book"/>

          </xsd:sequence>

          </xsd:complexType>

          <xsd:complexType name="BookException"/>

          </xsd:schema>

        • 家园 不好意思,还是没明白

          估计帮不上你了。从你说的现象来猜测,你现在已经有了一个Java-based service(EJB? POJO service? Servlet?)但是这个Service不知道是否已经是exposed as a Web Service.你现在想把它作为一个RPC Service提供给其他用户端,而且打算用J2EE Web Services而不是其他,比如Apache Axis什么的。但是你这个Service本身的RPC的Parameters或Return用了Custom Java Classes。你打算用工具从现有的Classes产生WSDL文件,然后把WSDL文件提供给NET的用户端使用。这些是猜测的哈.

          不是故意挑毛病,虽然这样在技术上可以实现,但是和现在主流的设计思想不太相符,主要的问题是这个暴露了Service Implmentation Details。如果这个service重复利用价值比较高,而且可能有不同平台的用户端使用,参数什么的又需要比较复杂的数据类型,WEB SERVICE应该是用document-based instead of RPC.如果有时间,这个是需要好好考虑将来的扩展性。

          如果你急着用,无所谓长期考虑按你现在的办法也行。听你的意思,你已经产生了相关的WSDL和Schema文件,并拿去给.NET客户端用来产生Web Service client.而且这些文件如果用来产生Java client没有问题.如果我猜测没错的话,你应该看看NET产生的SOAP Request对不对,可以和SOAP request gneerated by your Java Client比较一下。如果Request没问题,检查一下你的JAX-RPC Mapping files有没有问题。

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


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

Copyright © cchere 西西河