问题1:WebService是用来干什么的?
答:webservice是实现异构平台交互的一种技术
问题2:哪些框架可以帮助我们实现webserbice?
答:CXF Axis Metro这些框架可以帮助我们实现webservice,JAVA自己也可以帮我们实现webservice
问题3:解释下SEI和SIB两个术语
SEI:Service Endpoint Interface 服务端接口
SBI:Service implemetion Bean
问题4:如何用JAVA实现webservice?
1.1、创建接口
1.2、创建实现类
1.3、创建服务类
1.4、确立服务在网上发布的地址
1.2、公布服务
package test.my; import javax.jws.WebService; @WebService public interface IMyService { public int add(int a,int b); public int minus(int a,int b); }
package test.my; import javax.jws.WebService; @WebService(endpointInterface="test.my.IMyService") public class MyServiceImpl implements IMyService { @Override public int add(int a, int b) { System.out.println(a+"+"+b+"="+(a+b)); return a+b; } @Override public int minus(int a, int b) { System.out.println(a+"-"+b+"="+(a-b)); return a-b; } }
package test.my; import javax.xml.ws.Endpoint; public class MyServer { /** * 确定对外公布的服务地址 */ public static void main(String[] args) { String address = "http://localhost:6666/ns"; Endpoint.publish(address, new MyServiceImpl()); } }
问题5如何调用
package test.my; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class TestCilent { public static void main(String[] args) { URL url; try { url = new URL("http://localhost:6666/ns?wsdl"); QName sname = new QName("http://my.test/","MyServiceImplService"); Service service = Service.create(url, sname); IMyService ms = service.getPort(IMyService.class); System.out.println(ms.add(12,33)); } catch (MalformedURLException e) { e.printStackTrace(); } } }
class test.my.MyServiceImpl has neither @WebSerivce nor @WebServiceProvider annotation
没有@WebSerivce 也没有@WebServiceProvider注解
这个告诉我们需要为我们的服务接口和实现类写上@WebSerivce注解
下节预留问题:这里客户端调用依赖于服务器端接口,这样肯定和实际不符合,实际上客户端是没有服务端这些类和接口的,那么怎么办呢,请看第二节