客户端用cxf调用webservice,写法如下:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress(args[0]);
factory.setServiceClass(Hello.class);
Hello upload = (Hello)factory.create();请问一下,这个Hello.class是服务器端的类,这里面调用,必须要引人Hello.class类那岂不是把服务器的类要提供给调用者?有些写法里面,甚至要把Hello的实现类也要提供给调用者,那这样岂不是很不安全?业务逻辑都能看见了
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress(args[0]);
factory.setServiceClass(Hello.class);
Hello upload = (Hello)factory.create();请问一下,这个Hello.class是服务器端的类,这里面调用,必须要引人Hello.class类那岂不是把服务器的类要提供给调用者?有些写法里面,甚至要把Hello的实现类也要提供给调用者,那这样岂不是很不安全?业务逻辑都能看见了
我看的一个文章里说的,当对一个请求要身份验证的时候,说是要用到实现类。就算是只用到接口那岂不是用我的webservice还要给他一个类?
Hello upload = (Hello)factory.create();
虽然看上去是在本地有一个对象,其实真正的操作是在服务器端完成的,只是让你看去来"像"在本地执行而已.所以本地的对象只需要接口就行了,或者是一个"影子"对象
我主要是觉得用webservice还要提供个服务器的类,这种方式好像很怪异。。
不会暴露你内部业务方法,只是给对方接口方法。对方调用你接口方法就会触发你本地写好的实现类。
但是中间这一步调用过程是通过wsdl以及http协议还有soap标准通信实现。xml里面的只是数据格式,还有基本数据类型或者自定义对象的格式定义,还有接口方法、webservice地址等。你内部的业务逻辑是看不到的