JAVA 利用axis2或cxf调用ABAP发布的Webservice
调用Webservice几种方法的总结

现在有几种调用webservice的方法,总结一下:
①stub方式。
这种方式,是利用axis的WSDL2Java工具类。
这个是根据webservice的wsdl生成客户端类。
这样就可以像是在调用本地的类一样来调用webservice,很简单。
需要一个批处理,如下:
②动态代理
2.1. axis1.4
解释一下:编写流程:
1.创建axis的客户端服务service
2.由service创建call(call就是要进行调用的对象)
3.需要设置call对象的属性targetEndpointAddress(目标地址)和operationName(操作方法就是要调用的方法,其中这个方法需要QName(用于定位方法的)对象),new QName(path,”putInfo”)其中path是名称空间,putInfo 是这个名称空间中的一个方法(要调用的方法)。
4.最后就是调用webservice的方法了,invoke,这个方法需要传入需要的传入的参数,并且这个参数以对象数组的方式传过去。
此方法会返回返回值。
2.2 axis2
注释详细,不解释了。
Axis2与sap的webservice调用接口指南

Axis2与sap的webservice调用接口指南1、设置环境变量AXIS2_HOME = D:\JAVA\axis2\axis2-1.6.22、下载工具:(1.6.2生成的代理类存在BUG,建议用1.5.1版本)Eclipse:/downloads/Tomcat:/Axis:/axis2/java/core/download.cgiaxis2-war:/axis2/java/core/tools/index.htmlaxis2-eclipse-codegen-plugin:/axis2/java/core/tools/index.htmlaxis2-eclipse-service-plugin:/axis2/java/core/tools/index.html安装JDK不用多说了吧。
3、安装Eclipse插件:axis2-eclipse-codegen-plugin和axis2-eclipse-service-plugin是Eclipse的插件,分别解压在Eclipse的根目录就可以了。
注意:Axis2 1.6.2有个BUG,需要添加两个额外的Jar放在eclipse\dropins目录下:org.apache.axis2.eclipse.codegen.plugin_0.0.0.SNAPSHOT.jarorg.apache.axis2.eclipse.service.plugin_0.0.0.SNAPSHOT.jar下载地址:https:///content/groups/snapshots/org/apache/axis2/axis2.eclipse.serv ice.plugin/SNAPSHOT/https:///content/groups/snapshots/org/apache/axis2/axis2.eclipse.cod egen.plugin/SNAPSHOT/4、在SAP端发布Webservice(之前我写过相关文档,发布Web服务的细节这里就不在赘述了)5、得到WSDL文件的地址,并保存为本地文件以wsdl作为文件扩展名http://r3ids01:8000/sap/bc/srt/wsdl/bndg_534F90D9B51D4480E10080000A3F001C/wsdl1 1/allinone/ws_policy/document?sap-client=8006、在eclispe 的package Explorer 中点击右键,在菜单中选择新建--->other--->Axis2 CodeGenerator7、点击next,进入下一个页面,选择从wsdl文件来产生java文件。
java web service接口的调用方法

Java Web Service 接口的调用方法一、配置 axis在 Java 项目中配置 Web Service 服务的第一步是使用 axis 来配置服务器。
axis 是 Web Service 服务器的驱动程序,它负责将Web Service 发布到网络上,并提供调用 Web Service 接口的服务。
在 axis 中配置服务器很简单,只需要在服务器配置文件中添加如下内容:```axis2.xml:``````<axis2><transports><transport name="http" /></transports><services><service name="MyService"><endpoint name="httpEndpoint"address="http://localhost:8080/axis2/services/MyService" /> </service></services></axis2>```上述配置中,需要将“http”改为实际的 Web Service 接口地址,例如“http://localhost:8080/axis2/services/MyService”。
此外,需要将“httpEndpoint”设置为 Web Service 接口的实际地址。
二、在项目中配置 axis在配置 axis 之后,需要在 Java 项目中使用 axis 来加载 Web Service 接口。
在 Java 项目中配置 axis 的方法有多种,其中一种方法是使用 axis 的 servlet 来加载 Web Service 接口。
1.创建 web 项目 testWebService,将 axis 那个源文件中/axis-src-14/axis-14/lib 下的几个主要的包 (就是第一步中那个配置中提到的那个几个包),拷贝到这个项目的webRoot/WEB-INF/lib 下。
java调用sap pi webservice实例

要调用SAP PI的Web服务,您需要使用Java的Web服务客户端。
以下是一个简单的示例,演示如何使用Java调用SAP PI 的Web服务。
首先,您需要使用Java的`wsimport`工具从WSDL文件生成Java类。
假设您的WSDL文件名为`MyService.wsdl`,则可以使用以下命令生成Java类:```shellwsimport -keep MyService.wsdl```这将生成一个名为`MyService`的Java类,其中包含Web服务的所有端点。
接下来,您可以使用以下代码调用SAP PI的Web服务:```javaimport com.sap.aii. PI_Service_URL;import com.sap.aii.pi.ws.*;import com.sap.aii.pi.ws.soap.WS_HTTP_SOAP;public class SAP_PI_Client {public static void main(String[] args) throws Exception {WS_HTTP_SOAP wsHttpSoap = new WS_HTTP_SOAP();wsHttpSoap.setServiceURL(PI_Service_URL.getPIInstance(" your_pi_instance"));MyService myService = new MyService();MyPortType myPort = myService.getMyPort();String result = myPort.myMethod("param1", "param2"); System.out.println(result);}}```在此示例中,我们首先创建一个`WS_HTTP_SOAP`对象,并将其服务URL设置为SAP PI实例的URL。
java webservice几种调用方式

Java WebService几种调用方式一、介绍Java WebService是一种基于SOAP协议的远程方法调用技术,可以实现跨评台、跨语言的通信。
在实际应用中,我们可以使用多种方式来调用Web服务,本文将介绍Java WebService几种常见的调用方式。
二、基于JAX-WS的调用方式JAX-WS(Java API for XML Web Services)是一种用于创建和调用Web服务的Java标准。
通过使用JAX-WS,我们可以方便地创建客户端和服务端,并进行方法调用。
在客户端,我们可以通过使用wsimport命令生成客户端的Java代码,并使用Java代码来调用Web服务的方法。
在服务端,我们可以通过使用@WebService注解来发布服务,并使用Java代码实现方法的具体逻辑。
三、基于Axis的调用方式Apache Axis是一个流行的开源Java Web服务框架,它支持SOAP协议,可以用于创建和调用Web服务。
在基于Axis的调用方式中,我们可以使用WSDL2Java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。
在服务端,我们可以使用Java代码实现方法的逻辑,并使用Axis框架来发布服务。
四、基于CXF的调用方式Apache CXF是另一个流行的开源Java Web服务框架,它也支持SOAP协议,并提供了丰富的特性和扩展性。
在基于CXF的调用方式中,我们可以使用wsdl2java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。
在服务端,我们可以使用Java代码实现方法的逻辑,并使用CXF框架来发布服务。
五、总结在本文中,我们介绍了Java WebService几种常见的调用方式,包括基于JAX-WS、Axis和CXF。
通过这些调用方式,我们可以方便地创建和调用Web服务,实现跨评台、跨语言的通信。
个人观点和理解作为Java开发人员,我认为Java WebService是一种非常重要的技术,它可以帮助我们实现分布式系统之间的通信,为企业级应用的开发提供了很大的便利。
webservice五种发布方式及客户端调用

WebService 四种发布方式总结Author:yczhang1.CXF方式CXF与spring搭建webservice是目前最流行的方式,但是传闻cxf与jdk1.5有些不兼容,我没有遇到过,我遇到的问题是cxf与was6。
1.1不兼容,表现在cxf必须的jar包“wsdl4j-1.6。
2。
jar”报错,报的错为:ng。
IncompatibleClassChangeError,明显的jar包不兼容问题,很是头痛,后来查找资料找到解决办法是,将上述jar包新建一个was共享库,可以解决,但是客户周经理不想用此种方式,因为需要修改was,于是改用了axis2方式,下文会介绍。
该问题在此处做个记录,以后使用cxf与was的时候需要注意!!!使用cxf+spring搭建WebService:第一步,添加jar包。
此处需要注意,不同环境(tomcat、was)jar也不一定相同,例如我本地cxf+spring只需要如下jar包:而泰康的was环境则需要如下jar包:明显的多了很多,原因应该是服务器jar包池的不同。
根据错误提示缺什么补什么就可以了,注意jar包勿重复.第二步,配置web.xml文件,如下(重要的地方已标记):〈context—param>〈param-name>contextConfigLocation〈/param—name〉<param-value〉classpath:/applicationContext.xml</param-value〉</context—param>〈listener〉<listener—class〉org.springframework.web。
context。
ContextLoaderListener〈/listener—class〉</listener〉〈!—- Character Encoding filter --〉<filter〉〈filter—name〉encodingFilter</filter-name〉<filter-class>org.springframework。
Java调用CXFWebService接口的两种方式实例

Java调⽤CXFWebService接⼝的两种⽅式实例1.静态调⽤// 创建WebService客户端代理⼯⼚JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();// 判断是否抛出异常factory.getOutInterceptors().add(new LoggingInInterceptor());// 注册webservice接⼝factory.setServiceClass(DeductionService.class);// 配置webservice地址factory.setAddress("http://localhost:7002/card/services/HelloWorld?wsdl");// 获得接⼝对象CxfService service = (CxfService) factory.create();// 调⽤接⼝⽅法String result = service.sayHello("aaaaaaaaaa");System.out.println("调⽤结果:" + result);// 关闭接⼝连接System.exit(0);2.动态调⽤:JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:7002/card/services/HelloWorld?wsdl");// url为调⽤webService的wsdl地址QName name = new QName("/", "sayHello");// namespace是命名空间,methodName是⽅法名String xmlStr = "aaaaaaaa";// paramvalue为参数值Object[] objects;try {objects = client.invoke(name, xmlStr);System.out.println(objects[0].toString());} catch (Exception e) {e.printStackTrace();}区别:静态调⽤需要依赖service类,因为客户端调⽤cxf webservice接⼝的过程中需要服务器端提供service,很不⽅便,如果同⼀个项⽬中则没有区别。
java调用WebService服务的四种方法总结

java调⽤WebService服务的四种⽅法总结⽬录⼀、前⾔⼆、简介三、具体解析第⼀种⽅式,⾸先得下载axis2的jar包,Axis2提供了⼀个wsdl2java.bat命令可以根据WSDL⽂件⾃动产⽣调⽤WebService的代码。
第⼆种RPC ⽅式,强烈推荐。
第三种:利⽤HttpURLConnection拼接和解析报⽂进⾏调⽤。
第四种,利⽤httpclient总结⼀、前⾔本来不想写这个的,因为⽹上类似的是在是太多了。
但是想想⾃⼰前⾯段时间⽤过,⽽且以后可能再也没机会⽤了。
所以还是记录⼀下吧。
我这⼉是以C语⾔⽣成的WebService为例。
因为通常来说,两个java端之间的互相通讯没必要写成WebService的⽅式,太⿇烦。
除⾮有⼀⽅已经固定了是webService的⽅式(常见于⽜逼的甲⽅)。
⽽且就算写成了WebService⽅式两个java端直接调⽤也相对⽐较简单,因为⽤java的话很多规范都是⾃动⽣成好的,⽽其他语⾔就不是这样了,有时候对⽅压根就不是正确的规范,你还不能让对⽅改我觉得webService这个东西常⽤于不同语⾔编写的服务器之间进⾏数据交互。
因为是基于WSDL的。
我知道的主要的⽅法有以下⼏种(我这⼉全部以C语⾔编写的WebService做优缺点⽐较):⼆、简介1、通过axis2将WebService提供的wsdl⽂件⽣成对应的java类,这样就可以相当调⽤本地类⼀样调⽤webService提供的接⼝。
优点:调⽤简单,⽆需⾃⼰编写太多的东西。
缺点:⼤部分情况根据对应的webService⽣成的服务中地址是固定的,不易更改,⽽且⽣成的代码过于庞⼤,不便于阅读。
同时必须得有webservice对应的的wsdl⽂件,不太可控。
2、通过RPC⽅式调⽤(推荐使⽤)优点:⾃⼰编写部分调⽤代码,可灵活更换调⽤的路径,适合分布式部署的服务器,只需要知道webservice服务的⽅法名、命名空间、以及对应的参数就好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JA V A 利用axis2或cxf调用ABAP发布的Webservice
1.调用过程中存在问题及解决办法
1.1无法利用AXIS2, CXF标准工具解析ECC发布的地址。
解决:利用IE访问Webservice地址,然后将其另存为*.xml文件
利用CXF工具,编译该*.xml 文件,生成JAVA类。
输入:wsdl2java -d src - client http://Webservice。
附加:wsdl2java用法:
wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的命名空间,也就是要生成代码的包名:
-d 指定要产生代码所在目录
-client 生成客户端测试web service的代码
将文件拷贝到程序中。
注意问题:1. 类文件中的包名需要修改,部分定义的-包.类-格式中的包也需要修改.
2. 工具生成类的过程中,如果出现重名的情况(例如某类:TEST,但是有其他类
应该是test,大小写不区分),一般只会保存一个类,需要手工添加缺少的类(可从其他代码的报错信息看出)。
1.2访问权限问题:
访问的权限体现在http的体系中
不同的调用方式,拥有不同的设置权限方法,以CXF为例:
需要在解析后的**client类中添加代码:
Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
AuthorizationPolicy auth = new AuthorizationPolicy();
auth.setUserName("gang.xu");
auth.setPassword("654321");
h ttp.setAuthorization(auth);
1.3访问地址:
ABAP会发布两种可以访问的WSDL地址;
第一种:
:8000/sap/bc/srt/rfc/sap/ytest_se
rvice/300/ytest_service/ytest_service
第二种:
:8000/sap/bc/srt/wsdl/bndg_DF511834C4CA61F18306002
21999201E/wsdl11/allinone/ws_policy/document?sap-client=300
JAVA解析及调用的是第二种地址;第一种发布出的Webservice服务,具体的方法
等信息在第二种体现,2中,也包含了1的地址:
<wsdl:service name="service">
<wsdl:port name="YTEST_SERVICE" binding="tns:YTEST_SERVICE">
<soap:address
location=":8000/sap/bc/srt/rfc/sap/ytest_ service/300/ytest_service/ytest_service" />
</wsdl:port>
</wsdl:service>
1.4调用方法
根据生成的**client类,可以找到方法名,需要传入的参数等信息。
参数类型也会根据WEBSERVICE的发布,自动解析为某个类文件。
具体的方法需要具体分析。
1.4.1MC例子
生成包mc_style
类:YTESTSERVICE.*.client.java
类中包含:ABAP发布的方法,传入的参数等。
Port.ytestservice(****);
2.侯志宇提供的方法。
ng.String _ytestService_flag = "X";
如果flag设置为X,表示存储,如果是““,表示查询。
ng.String _ytestService_flagDelete = "";
如果delete=X,删除表中数据。
ng.Integer _ytestService_sum = null;
如果sum = null,查询表中所有数据。
如果sum = 200,表示查询表中200条数据
com.bireturn.mc.mc_style.TableOfZservice
_ytestService_yserviceVal = null;
传入的参数:具体类型和结构参照对应的类
ABAP发布Webservice
一、输入se37或者se80创建WEBSERVICE
二、Webservice创建成功后,输入事务代码SOAMANAGER
注意:WINDOWS 中需要配置host 文件
三、选择第二个也签中的第一个连接
单击Open WSDL document for selected binding连接弹出:WSDL的地址
<soap:address
location=":8000/sap/bc/srt/rfc/sap/zws_s ervic/300/zws_servic/zws_servic" />
LOCATION 或者ACTION后的地址则是外部调用Webservice的地址
逻辑端口也用如此方法创建。