您的位置:首页 > 其它

在现有系统中通过stubs方式部署 webservice

2011-03-03 14:31 453 查看
最近,我们的销售系统收到客户的要求,要求能为统一的DLR门户提供webservice接口服务,以期整合管理客户的系统入口。

客户提出

1.首先需要系统提供用户名和密码给portal

2.屏蔽账户的添加、修改、删除的功能

3.提供账户添加、删除、修改、获得所有账户的webservice接口,用于portal系统进行统一账户的管理

3.提供DLR清单列表的webservice,用于portal系统对dlr信息的维护

在现有的系统里头,如何改善方能达到目的呢?
采用AXIS框架
1、搭建AXIS环境
安装环境 J2SE SDK 1.4,weblogic8.1sp4,eclipse 3.2。
http://xml.apache.org 网站下载Axis1.4安装包。
将Axis相关包文件放在WEB-INF/lib目录下。
Axis可选的包(需另行下载):activation.jar; mail.jar; xmlsec-1.4.jar拷贝到WEB-INF目录下,生成客户端时候需要使用。

weblogic启动时加载以上jar包(startWeblogic.Cmd)

2、web.xml增加以下
<!---for web servicewebservice类服务的映射配置-->
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/AxisServlet</url-pattern>
</servlet-mapping>
<!---jws -->
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

3、weblogic.xml增加以下
解决webservice8.1中所带的webservices.jar和axis中的saaj.jar冲突问题
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

4、启动weblogic web服务
访问 http://localhost:7002/services,显示AXIS框架的内置服务画面

And now... Some Services

AdminService (wsdl)

AdminService

Version (wsdl)

getVersion

5、HelloWorld类
package cn.com.toyota.sales.webservice.hello;
public class SayHello {
public String getName(String name){
return "hello!" + name;
}
public int add(int a,int b){
return a + b;
}
}

6、编写wsdd文件
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="SayHello" provider="java:RPC">
<parameter name="className" value="cn.com.toyota.sales.webservice.hello.SayHello"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>

7、编辑一个deploy.bat
set Axis_Lib=D:/watool/cdist/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%/
set Axis_Servlet=http://localhost:7002/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% D:/watool/cdist/www/public_html/WEB-INF/deploy.wsdd

执行这个批处理文件
这时候,如果提示成功的话,访问http://localhost:7002/services 就会显示服务列表。

And now... Some Services

AdminService (wsdl)

AdminService

Version (wsdl)

getVersion

SayHello (wsdl)

getName

add

8、生成客户端client stub文件
在浏览器上访问服务器端的服务,可以下载到WSDL文件,通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码。
WSDL2Java.bat:
set Output_Path=D:/work/projects/Eclipse_Projects/jdk14/cdist/src
set Package=cn.com.toyota.sales.webservice.hello
set Axis_Lib=D:/watool/cdist/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=http://localhost:7002/AxisServlet
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://localhost:7002/services/SayHello?wsdl

9、Source生成
SayHello_PortType.java、SayHelloService.java、SayHelloServiceLocator.java、SayHelloSoapBindingStub.java

package cn.com.toyota.sales.webservice.hello;
public class SayHelloClient {
public void execute() throws Exception {
SayHelloService service = new SayHelloServiceLocator();
System.out.println("----------------------");
SayHello_PortType client = service.getSayHello() ;
String retValue = client.getName("No.1");
System.out.println(retValue);
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
SayHelloClient c = new SayHelloClient();
c.execute();
}
}

执行以上程序,结果显示:
----------------------
hello!No.1

好的,成功~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: