淘客熙熙

主题:请教一个关于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
家园 怎么个乱法?不太明白你的意思

从设计的角度来讲,如果你的用户端是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/

家园 对于全新的系统

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

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

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

家园 借这个宝地问一下,如果要学习ajax要什么基础,有啥书或者资料
家园 不好意思,还是没明白

估计帮不上你了。从你说的现象来猜测,你现在已经有了一个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有没有问题。

家园 可以问铁手啊

客户端主要需要用XML和Javascript,服务费端就看你要干什么了

家园 基本就是要实现个类似google map这样的东西

但我不想光调用他们的API,想了解整个工作原理

家园 我想你的意思是

.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代码就是正确的。

家园 这俺就不懂了

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

家园 how Ajax works

http://bothack.wordpress.com/2006/05/19/a-look-at-how-ajax-works/

家园 看一下namespace

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

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

家园 如果从WSDL和XML SCHEMA这一边开始设计的话

你是否知道有什么现成的工具可用?完全自己手写太费事了。

我最终要实现的JAVA类大概是这个样子的:

有CLASS A, CLASS B, CLASS C和D 。

CLASS A就是要返回给CLIENT的,其他的是服务器这一边自己用的.

class a []{

string xxx;

class b;

class d;

}

class b {

string yyy;

class c[];

}

class c {

string abc;

string xyz

}

class d {

string yuill

string foo;

}

关键词(Tags): #WSDL#XML#SCHEMA
家园 干嘛不换一个工具试验?

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

家园 用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>

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


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

Copyright © cchere 西西河