博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAX-WS发布WebService
阅读量:5331 次
发布时间:2019-06-14

本文共 2130 字,大约阅读时间需要 7 分钟。

JAX-WS(Java API for XML-Web Services)

环境说明:

MyEclpose 6.6

jdk 1.6.0_15

tomcat 6.0
创建并发布服务器端应用
1.新建web service project
设置如下图。
2.建立一个实现类,代码如下:

 

package
 net;
public
 
class
 addImpl {
    
public
 
double
 add(
double
 num1,
double
 num2){
        
return
 num1
+
num2;        
    }
}

 

这里只需要实现类,不再像XFIRE还需要一个接口。
ps:Web服务可用单个Java类的实现,但是最好是用“接口+实现”的方式来实现
3.建立web 
service
选择工程名,点击工具栏的new web service按钮。
然后如下配置:
接着(在JAVA BEAN中输入实现类的名称,选择generate wsdl in project):
点击finish后包中多出一个该实现类的代理类addImplDelegate.java
4.导入包
工程-属性-build path-add library-myeclipse libraries导入以下两个包:
如果缺少这两个包,tomcat启动时会出现以下错误: 

严重: Error configuring application listener of 
class
 com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener

 

5.启动tomcat,验证并获取WSDL文件
启动tomcat后在浏览器中输入http://localhost:8080/jaxws_src/addImplPort并点击页面中的链接查看WSDL文件,如果该文件能正确显示证明服务器端大功告成。
wsdl文件的uri是http://localhost:8080/jaxws_src/addImplPort?wsdl(你可能会问URI中的addImplPort从何而来,其实这个名字由图4中的Services port设定)

 

ps:在web.xml中有如下类容,可看出这个/addImplPort的作用

代码
 
<
servlet
>
      
<
description
>
JAX-WS endpoint - addImplService
</
description
>
      
<
display-name
>
addImplService
</
display-name
>
      
<
servlet-name
>
addImplService
</
servlet-name
>
      
<
servlet-class
>
          com.sun.xml.ws.transport.http.servlet.WSServlet
      
</
servlet-class
>
      
<
load-on-startup
>
1
</
load-on-startup
>
  
</
servlet
>
  
<
servlet-mapping
>
      
<
servlet-name
>
addImplService
</
servlet-name
>
      
<
url-pattern
>
/addImplPort
</
url-pattern
>
  
</
servlet-mapping
>

 

 

创建客户端调用
(不要关闭TOMCAT啊,不然。。。。。)
1.新建java project,建立一包(包名安需求)net.
2.选择包点new web services client(参照本文的第二张图)
   ps:有别与xfire,客户端不一定是服务端相同类型的web services client,可以是一个普通的工程也OK!!
3.指定wsdl的URI或wsdl的文件路径(见上)。
程序在net包中生成一些类如图:
ps:图中的add.java是一个javabean来,聪明的你应该知道它有啥用了吧!!
4.新建一个测试类:

 

package
 com;
import
 net.AddImplDelegate;
import
 net.AddImplService;
public
 
class
 test {    
    
public
 
static
 
void
 main(String[] args) {
        AddImplService service
=
new
 AddImplService();
        AddImplDelegate d
=
 service.getAddImplPort();
        
double
 result
=
 d.add(
15.6
12.5
);
        System.out.println(result);
    }
}

 

 

转载于:https://www.cnblogs.com/huminxxl/archive/2013/05/27/3101513.html

你可能感兴趣的文章
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>
给C#学习者的建议 - CLR Via C# 读后感
查看>>
Recover Binary Search Tree
查看>>
Java 实践:生产者与消费者
查看>>
[转]IOCP--Socket IO模型终结篇
查看>>
各种正则验证
查看>>
观察者模式(Observer)
查看>>
python中numpy.r_和numpy.c_
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
freebsd 实现 tab 命令 补全 命令 提示
查看>>
struts1和struts2的区别
查看>>
函数之匿名函数
查看>>
shell习题第16题:查用户
查看>>
Redis常用命令
查看>>
2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)
查看>>
2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
查看>>
redis cluster 集群资料
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>