SAP如何调用JAVA


SAP调用JAVA

前言:eclipse中的JBOSS可以发布webservice,但是缺点是关闭eclipse,webservice服务就没有了,并且局域网中不可以访问。对于SAP中必须要局域网访问webservice才可以实现调用java,所以本文就是一个成功真正的从sap链接java的方法所走联通路的记录,笔者在此希望各位有此方面需求的程序员少走弯路,所以在此分享我的经验。若有不足和更好的方法,希望给我留言,我们共同探讨,谢谢。

下图为方法的总体思路。


如果SAP中无权限创建代理类,则也可以使用一下思路。



一、JAVA脱离eclipse发布局域网的webservice,作为服务端。


1、用eclipse创建java程序,并发布webservice.

      下载eclipse——jee版本,http://pan.baidu.com/s/1qXVO6de 密码:yd08;这里面有eclipse可以下载使用

      记得先前需要配置电脑JDK与JRE的java运行环境,这里就不做过多解释。


 (1)打开eclipse创建web工程如下图所示:File->new->other->web->Dynamic Web Project .

(2)创建包在src里面

(3)创建一个class

(4)这里在里面写入了两个方法,一个是sayhello,另一个是加减乘除运算


package def.pack;

public class HelloWorld {
  public String SayHello (String UserName ) { 
          return "Hello" + UserName; 
   } 
}


package org.clyde;
public class CalculatorImpl {
public String calucate(String number1, String number2, String operator) {
Float f1, f2, f3 = null;

try{
f1= Float.parseFloat(number1);
f2= Float.parseFloat(number2);
switch(operator.charAt(0)) {
case'+':
f3= f1 + f2;
break;
case'-':
f3= f1 - f2;
break;
case'*':
f3= f1 * f2;
break;
case'/':
f3= f1 / f2;
break;
default:
return"Not supported!";
}
}catch (Exception e) {
return"Not supported!";
}
return String.valueOf(f3);
}
}

2、写好eclipse程序后就先放在这里,接下来在分享盘中下载

org.apache.axis2.eclipse.codegen.plugin_1.7.6.jar
org.apache.axis2.eclipse.service.plugin_1.7.6.jar
(1)这两个文件下载好后,放在你安装eclipse目录下eclipse\dropins文件夹中,然后重新启动eclipse你会发现File->new->other会多一项axis2 wizards文件。
(2)右键一个java文件出现File->new->other->Axis2 Service Archiver之后出现以下界面,选择你的工程目录下的classes文件夹就可以了。 
(3)点击next

(4)点击next

(5)点击next

(6)随便取名Service name  但是class name   是包名.class名;点击load会加载出里面的方法。


(7)点击next;output file...你就选择桌面吧。


(8)点击finish你就会发现桌面出现了一个aar文件,这里就先放在这吧。

3、在云盘中有apache-tomcat-8.5.20.zip服务器这里面我都配置好了,你直接下下来解压你就放在C\盘下吧(其实那个盘都无所谓)。

(1)打开cmd

输入:cd C:\apache-tomcat-8.5.20\bin  回车

再输入:service.bat install 回车即可,则tomcat服务器安装成功

(2)将刚才生成的arr文件放到C:\apache-tomcat-8.5.20\webapps\axis2\WEB-INF\services的文件夹下

(3)启动tomcat服务器:点击C:\apache-tomcat-8.5.20\bin\tomcat8w.exe,点击start就好了。


(4)在浏览器中输入http://localhost:8080/axis2/services/CalculatorImpl?wsdl就可以看见你发布的webservice


4、局域网中的其他电脑访问你的http://你的ip:8080/axis2/services/CalculatorImpl?wsdl
是访问不到的,如果想其他电脑访问,这需要进行一下设置开放8080端口,关于tomcat的设置都已经设置好了。

(2)点击高级设置,入栈规则,新建规则,选择端口

(3)选择TCP,端口填写8080


(4)然后一直next到完成,在局域网别的电脑输入

http://你的ip:8080/axis2/services/CalculatorImpl?wsdl也会出现webservice服务。

到目前为止,java服务端已经做好了,接下来就开始做SAP服务端了。


二、 SAP如何调用Webservice

因为在SAP中的se80创建代理类时出现访问权限问题,若你的SAP可以创建代理类,则可以看一下此博客的方法:http://www.cnblogs.com/ruingy/p/3539630.html,当然其中的URL换成http://你的ip:8080/axis2/services/CalculatorImpl?wsdl就可以了,如果不能创建,那就接下来向向下看吧。

1、使用PHP作为桥梁帮SAP传参数

(1)创建PHP函数建议使用sublime编写,或者你直接建一个txt文件将程序写在里面,然后保存为名字点PHP;在云盘中下载Wampserver安装作为php的运行环境。

<?php
ini_set('soap.wsdl_cache_enabled','0');//关闭缓存
$soap = new SoapClient('http://你的IP:8080/axis2/services/CalculatorImpl?wsdl');
$number1 = isset($_GET["number1"]) ? $_GET["number1"] : ' ' ;
$number2 = isset($_GET["number2"]) ? $_GET["number2"] : ' ';
$operator = isset($_GET["operator"]) ? $_GET["operator"] : ' ';
$pamer = array('number1' => $number1 , 'number2' => $number2 ,'operator' => $operator);
$over = $soap->calucate($pamer);
//print_r($over) ;
echo $over->return;
//echo $soap->_soapCall('Add',array(1,2))//或者这样调用也可以
?>


(2)将上面所写的文件放在wampsever的安装目录WWW下,启动wampsever,当变绿色了就在浏览器输入http://localhost/文件名点php?number1=1&number2=2&operator=/就可以访问了。访问结果应是0.5
(3)如果你想使用别的计算机中也可以访问本地的php文件需要修改wampsever一下参数。一下两个Conf文件都需要修改
httpd.conf的修改是:(这里我将其他的备注# 都删除了。红色是已改的地方)
 <Directory />
    AllowOverride none
    Require all granted
</Directory>

<Directory "${INSTALL_DIR}/www/">
    AllowOverride all
    Require all Granted
</Directory>

httpd-vhosts.conf的修改是:
<Directory "${INSTALL_DIR}/www/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require all granted

  </Directory>
改完之后重新启动wampsever你就可以在局域网访问http://你的IP/文件名点php?number1=1&number2=2&operator=/

2、SAP如何调用PHP

打开SE38创建一个程序代码为一下:

REPORT  ZWEB.
DATA : url TYPE string.
DATA : http_client TYPE REF TO if_http_client.
DATA: content TYPE xstring.  "16进制返回值
DATA :  l_content_length TYPE  i.
DATA:  str TYPE string,
      l_con TYPE REF TO cl_rpe_convert.


DATA number1 TYPE c.
DATA number2 TYPE c.
DATA operator TYPE c.


START-OF-SELECTION.


CREATE OBJECT l_con.


  number1 = '1'.  "三个参数
  number2 = '2'.
  operator = '*'.



 CONCATENATE  'http://132.147.248.16/website/diaoyong.php?number1=' number1 '&number2=' number2  '&operator=' operator INTO url. "地址嵌入参数


  CALL METHOD cl_http_client=>create_by_url  "调用php函数
    EXPORTING
      url                = url
    IMPORTING
      client             = http_client   "生成新客户端
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.


  IF sy-subrc = 0.
    http_client->send( ). "传参数
    http_client->receive( )."返回值
    content = http_client->response->get_data( ).  "返回的数据值
    http_client->close( ).


    CALL METHOD l_con->xstring_to_string  "将16进制转换为字符串
    EXPORTING
      input  = content
    IMPORTING
      output = str.


    IF sy-subrc = 0.
      write:str.
    ENDIF.
  ENDIF.

这就连通SAP掉用JAVA的全部路径。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值