`

jboss forge整合 hibersap

阅读更多
最近项目中使用sap的接口,之前项目中有案例,所以自己在现有基础上理解了如何用hibersap创建映射的实体,连接到sap的系统进行数据接口的传输.
.需要的工具:JBoss Forge HiberSap for Forge
   1.1 HiberSap下载
   下载地址:
             http://hibersap.org/details/ hibersap官网(下载项目通过hibersap的jar)
    下面是maven的依赖配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>hibersap-example</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.hibersap</groupId>
            <artifactId>hibersap-core</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.hibersap</groupId>
            <artifactId>hibersap-jco</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.hibersap</groupId>
            <artifactId>sapjco3</artifactId>
            <version>3.0.12</version>
        </dependency>
    </dependencies>
</project>

    也可以去github下载:
    https://github.com/hibersap

    1.2 jboss forge下载
            [url] http://forge.jboss.org/ [/url] jboss forge官网(下载forge-distribution-1.4.4.Final)
            https://vimeo.com/45260307/这个网站有高手自己写了jboss forge for hibersap用来自动生成映射类。
    
      1.3
      本次教程是教大家下面的东西:
     https://github.com/drbunsen-bsteam/plugin-hibersap这个是综合包
     https://github.com/forge/plugin-hibersap 单独的不含forge的包
   
,配置环境:下载下来的综合包中,目录如下可以加forge1.4.4的jar拿出来。
   
    全部放在另一个目录下面,你可以自行选择,我放在E:下面
   
    2.1 cmd命令来到E:\forge\plugin-hibersap-master_all\plugin-hibersap-master 验证下载的jar没有问题。执行mvn clean package -Dmaven.test.skip=true 前提你得安装maven环境。顺带你要修改里面pom.xml参数,因为你下的jar,人家不清楚你需要的版本是多少的。
<properties>
    <jco.version>3.0.10</jco.version>
    <servlet-api.version>3.0.1</servlet-api.version>
    <validation-api.version>1.0.0.GA</validation-api.version>
    <hibersap.version>1.2.0-Beta03</hibersap.version>
    <forge.api.version>1.4.4.Final</forge.api.version>
</properties>

# 使用jaxb-impl 2.2.7版本
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.2.7</version>
</dependency>

    2.2 如果你在clean的时候一直报错,说sapjco从中央仓库找不到.这个就是说你的当前的环境需要代理,去你maven环境中 更改 setting.xml的proxy的代理获取.
   
    2.3 生成一个maven 的java项目 执行下列的代码 去另一个没有pom.xml的环境目录去执行.我去了E:
  
mvn archetype:generate -B -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1 -DgroupId=com.dunkcoder -DartifactId=testHibersap -Dversion=1.0-SNAPSHOT -Dpackage=com.dunkcoder

  
   2.4 在生成好的testHibersap做如下操作:
  
# pom.xml中增加sap-jco引用
<dependency>
  <groupId>com.sap</groupId>
  <artifactId>sap-jco</artifactId>
  <version>3.0.10</version>
</dependency>

# 暂且hibersap.xml先长成这样,放在testHibersap\src\main\resources\META-INF\目录下
<?xml version="1.0" encoding="UTF-8"?>
<hibersap xmlns="urn:hibersap:hibersap-configuration:1.0">
    <session-manager name="sapenvtest">
        <context>org.hibersap.execution.jco.JCoContext</context>
        <properties>
            <property name="jco.client.client" value="jco_client" />
            <property name="jco.client.user" value="jco_user" />
            <property name="jco.client.passwd" value="jco_passwd" />
            <property name="jco.client.lang" value="jco_lang" />
            <property name="jco.client.ashost" value="jco.ashost" />
            <property name="jco.client.sysnr" value="jso.sysnr" />
            <property name="jco.destination.pool_capacity" value="pool_capacity" />
        </properties>
        <annotated-classes>

        </annotated-classes>
    </session-manager>
</hibersap>

  
   2.5 forge for hibersap以及准备项目都准备好了,现在要配置forge的环境了。
    去E:\forge\forge-distribution-1.4.4.Final\bin 双击forge.bat
    执行如下操作
   
# 本地安装方式
[no project]  $ forge source-plugin E:\forge\plugin-hibersap-master

# ... ... 需要多等一会,没有问题,plugin-hibersap安装成功
The following plugins have been activated: [generate-sap-entities]

# 切换到testHibersap项目
[no project]  $ cd E:\testHibersap
[testHibersap] testHibersap $

# 查看命令帮助
[testHibersap] testHibersap $ help generate-sap-entities

# 在hibersap plugin的config目录下初始化
#C:\Users\zhiming.zeng\.forge\plugins\org\hibersap\forge\hibersap-plugin
    \config

sap-connection.properties文件,控制台会打印出当前各个配置项及值
[testHibersap] testHibersap $ generate-sap-entities list-properties

jco.destination.pool_capacity=1
jca.connectionspec.factory=org.hibersap.execution.jca.cci.SapBapiJcaAdapterConnectionSpecFactory
session-manager.name=SM001
jco.client.lang=en
jco.client.ashost=some.sap-system.com
jco.client.user=sapuser
jco.client.sysnr=00
jco.client.passwd=password
jco.context=org.hibersap.execution.jco.JCoContext
jca.context=org.hibersap.execution.jco.JCAContext
jco.client.client=001
jca.connection.factory=java:/eis/sap/A12

# jca两个配置项用不到,删除
generate-sap-entities delete-property --key jca.connectionspec.factory
generate-sap-entities delete-property --key jca.connection.factory

# 逐个修改SAP连接配置,也可以直接修改sap-connection.properties文件
# 类似your_passwd之类比较复杂,可用双引号""包括起来
generate-sap-entities set-property --key session-manager.name --value sapenvtest
generate-sap-entities set-property --key jco.client.client --value your_client
generate-sap-entities set-property --key jco.client.user --value your_user
generate-sap-entities set-property --key jco.client.passwd --value your_passwd
generate-sap-entities set-property --key jco.client.lang --value your_lang
generate-sap-entities set-property --key jco.client.ashost --value your_ashost
generate-sap-entities set-property --key jco.client.sysnr --value your_sysnr
generate-sap-entities set-property --key jco.destination.pool_capacity --value your-pool_capacity

    2.6如果你在执行help generate-sap-entities发现是出现no such commod表示
    C:\Users\zhiming.zeng\.forge\plugins\org\hibersap\forge\hibersap-plugin\1.1.0-SNAPSHOT-bf728df9-53f8-49a9-89bb-e7cf28bcd739 你的路径是你的当前用户名
   下面的jar可能缺失.原因是E:\forge\plugin-hibersap-master_all\plugin-hibersap-master的pom.xml可能没有在中央仓库找到jar。解决办法是在pom.xml添加你的私服
  
  <repository>
      <id>my_nexus</id>
      <name>my_nexus for Maven</name>
      <url>http://172.16.3.41:8081/nexus/content/groups/public/</url>
    </repository>

, 生产映射代码:还是在forge.bat里面的cmd命令窗口
   3.1 ABAP程序员会告诉你应该调用哪些SAP RFC或BAPI函数,怎么传参,返回结果如何判断等。接下来是重头戏,以下面3个为例,按照向导提示逐步往下生成Java代码进行测试(*号为通配符)。按照我的步骤来,整个过程不会有什么错误(代码生成向导中选择了SessionManager:saptestenv的话会自动修改hibersap.xml配置,添加annotated-classes值项):
  
[testHibersap] testHibersap $ generate-sap-entities --name-pattern *STFC_CONNECTION*
[testHibersap] testHibersap $ generate-sap-entities --name-pattern *BAPI_COMPANYCODE_GETLIST*
[testHibersap] testHibersap $ generate-sap-entities --name-pattern *RFC_SYSTEM_INFO*

如果无论如何都不能正常生成代码,是SAP方RFC或BAPI的问题,本人就曾经遭遇过此种情况。


3.2 在eclipse中导入testHibersap项目,当然,自动生成的代码有些小瑕疵:BapiCompanycodeGetlist和RfcSystemInfo的无参构造函数少了大括号,手工补上。接下来写SapJCoUtil类并测试:
package com.dunkcoder.util;

import java.util.List;

import org.hibersap.configuration.AnnotationConfiguration;
import org.hibersap.session.Session;
import org.hibersap.session.SessionManager;

import com.dunkcoder.hibersap.BapiCompanycodeGetlist;
import com.dunkcoder.hibersap.CompanycodeList;
import com.dunkcoder.hibersap.RfcSystemInfo;
import com.dunkcoder.hibersap.RfcsiExport;
import com.dunkcoder.hibersap.StfcConnection;

public class SapJCoUtil {

    public static String echoTextOfStfcConnection() {

        AnnotationConfiguration config = new AnnotationConfiguration("sapenvtest");
        SessionManager sessionManager = config.buildSessionManager();

        final Session session = sessionManager.openSession();
        StfcConnection conn = new StfcConnection("requtext");
        session.execute(conn);
        session.close();

        return conn.get_echotext();

    }

    public static RfcsiExport getSystemInfo() {

        AnnotationConfiguration config = new AnnotationConfiguration("sapenvtest");
        SessionManager sessionManager = config.buildSessionManager();

        final Session session = sessionManager.openSession();
        RfcSystemInfo info = new RfcSystemInfo();
        session.execute(info);
        session.close();

        return info.get_rfcsiExport();

    }

    public static List<CompanycodeList> getCompanyCodeList() {

        AnnotationConfiguration config = new AnnotationConfiguration("sapenvtest");
        SessionManager sessionManager = config.buildSessionManager();

        final Session session = sessionManager.openSession();
        BapiCompanycodeGetlist list = new BapiCompanycodeGetlist();
        session.execute(list);
        session.close();

        return list.get_companycodeList();

    }

    public static void main(String[] args) {
        echoTextOfStfcConnection();
        getSystemInfo();
        getCompanyCodeList();
    }
    
}


嗯,还可以,简单清爽,省却了包装sapjcoX.jar代码的烦恼,具体项目中可将AnnotationConfiguration和SessionManager改为注入方式。

测试项目testhibersap的完整代码在这里。

LinuxX64+Tomcat环境,找不到sapjco3怎么办?
==>修改catalina.sh文件中的JAVA_OPTS,指定-Djava.library.path=/usr/sapjco3,将libsapjco3.so放到该目录。

   经验来自与我领导二哥 本章只是更精细的说明
   http://blog.dunkcoder.com/20141021/connect-sap-with-hibersap/
   顺带一提jco原始的操作文档在如下url
[url]   http://help.sap.com/saphelp_nw70/helpdata/EN/47/80f671ee6e4b41b63c0fe46bd6e4f8/frameset.htm[/url]
  
  • 大小: 214.1 KB
  • 大小: 39.8 KB
分享到:
评论

相关推荐

    intellij-idea-plugin:JBoss Forge IntelliJ IDEA插件

    JBoss Forge IntelliJ IDEA插件发表在 提供对IntelliJ IDEA中的命令和向导的支持。 要显示命令列表,请按Ctrl+Alt+4 。 在MacOSX上,使用Command + Option + 4 。安装使用IDE内置插件系统: 首选项&gt;插件&gt;市场&gt;搜索...

    plugin-hibersap:hibersap-plugin 4 jboss forge 1.4.4

    您会发现: - src/main/resources 中对应的 jboss forge 版本为 ZIP - src/main/resources 中 3.0.10 版本的 sapjco3.jar 从命令行将 sapjco3 jar 安装到本地 Maven 存储库(可在插件 POM 中找到): mvn install:...

    hibersap-plugin:hibersap-plugin 4 jboss forge 1.4.4

    Forge 的 Hibersap 插件用于生成类以供 Hibersap 框架使用以连接到 SAP 系统的插件。 该插件允许在给定的 SAP 系统中搜索函数名称,并生成所有必需的类和配置文件,以将给定的函数与 Hibersap 框架一起使用。 您可以...

    spring-jboss整合

    ### Spring与JBOSS整合知识点详解 #### 一、引言 随着企业级应用的不断发展,集成各种中间件成为一种趋势。Spring框架以其强大的依赖注入(Dependency Injection, DI)及面向切面编程(Aspect Oriented ...

    SimplistAddon:最简单的 JBoss Forge 插件,用于说明我在 GNULinux Magazine France 上的文章的一部分(#181,2015 年 4 月)

    简单插件 SimplistAddon 插件使您能够阅读简单的 JBoss Forge 插件代码。 依赖项:无(或) 设置 此插件需要以下安装步骤。 addon-install-from-git -url 这个站点

    agoncal-sample-forge:有关JBoss Forge的样本

    01-roaster:有关Roaster API的示例02-炉:有关炉容器的示例03-template:有关在Forge中使用模板的示例附加组件一些示例需要外部插件并需要安装: addon-install --groupId org.jboss.forge.addon --name angularjs...

    wildfly-build-tools-forge-addon:WildFly 构建工具的 JBoss Forge 插件

    疯狂构建工具锻造插件一个 JBoss Forge 插件,通过 WildFly 构建工具提供 WildFly 9+ 应用服务器的交互式配置。 该插件支持通过对引用工件的分析提供的参数值的自动完成,例如功能包中可用的所有配置文件和子系统。 ...

    fabric8-forge:支持用于Fabric8 iPaaS的JBoss Forge插件,以及在Fabric8 DevOps中将Forge用作REST服务

    rest提供了一个REST服务,用于在使用与JBoss Forge一起工作 文献资料 有关更多详细信息,请参见 基于Fabric8 Forge的系统测试 要检查系统测试,请查看 构建插件 要尝试加载项: cd addons mvn install 然后,您...

    iis与jboss整合

    ### IIS与JBoss整合知识点 #### 一、概述 在Windows操作系统环境下,IIS (Internet Information Services) 与 JBoss 的整合可以实现更高效、稳定的Web应用部署方案。通过这种方式,可以充分发挥IIS作为高性能HTTP...

    docker-addon:JBoss Forge 2.x的Docker插件

    适用于JBoss Forge 2的Docker插件。 Docker插件为Forge项目中的Docker技术提供支持。该插件导出服务以供其他插件使用。 安装 从Forge CLI: addon-install-from-git --url ...

    Jboss性能优化整合

    《JBoss性能优化整合》是一份深度探讨Jboss应用服务器性能提升的重要资料,它集结了作者反复试验与研究的心得,旨在为读者提供实用而全面的优化策略。Jboss作为一款开源的企业级Java应用服务器,其性能表现直接影响...

    JBOSS与APACHE的整合

    JBOSS与APACHE的整合 JBOSS与APACHE的整合是指将JBOSS应用服务器与APACHE Web服务器集成在一起,以提高Web应用程序的性能和可扩展性。这种整合方式可以将静态网页的请求交给APACHE服务器处理,而将动态网页的请求...

    apache+jboss整合详细步骤全过程

    ### Apache与JBoss整合详细步骤 #### 环境配置 在进行Apache与JBoss的整合之前,首先需要确保服务器的基础环境已经配置好。这里提到的环境包括两个服务器:一个运行Apache与JBoss(IP: 192.168.1.95),另一个仅...

    JBoss学习全集多本书整合

    【JBoss学习全集多本书整合】集合了丰富的JBoss相关知识,涵盖了JBoss服务器的配置、管理和优化等多个方面,是深入理解与掌握JBoss的理想资料。JBoss,作为一个开源的应用服务器,基于Java EE(现在被称为Jakarta EE...

    Jboss下hibernate整合EJB

    本文将详细讲解如何在JBoss应用服务器上整合Hibernate和EJB。 **一、EJB简介** EJB是Java EE平台的一部分,它提供了一种标准的方式来创建分布式、事务处理、安全和可管理的企业级服务。EJB类型主要包括会话Bean...

    jbake-forge-addon:JBake Forge 插件

    JBake 的 JBoss Forge 插件 这是一个为 JBake 项目提供 JBoss Forge Add-on 的项目。 Currently this project is in-development. 依赖项:无(或) 取决于 添加在 出口 可选的 DEP1 是的 不 DEP2 是的 是的 设置...

    IIs6整合jboss4.2 配置开发包

    【标题】:“IIS6整合jboss4.2 配置开发包”涉及的主要知识点是将Internet Information Services (IIS) 6.0与Java应用服务器JBOSS 4.2进行集成,以便在Windows环境中运行Java应用程序。这通常是为了利用IIS的Web...

    EJB3+JBOSS5+JPA整合

    总的来说,“EJB3+JBOSS5+JPA整合”是一个集成了企业级服务、持久化管理和应用服务器的复杂体系,它为企业级Java应用提供了强大的后端支持。开发者需要深入理解EJB3的编程模型、JPA的持久化机制以及JBOSS5的配置和...

    JBossTools-ALL-win32-3.0.0.CR2

    7. JBoss Forge:这是一个快速应用开发工具,可以帮助开发者生成、配置和修改Java EE项目结构,无需手动编写大量配置文件。 8. CDI(Contexts and Dependency Injection)支持:帮助开发者利用CDI来实现依赖注入,...

    JBoss配置与集成

    JBoss配置与集成是企业级Java应用程序部署的关键环节,它涉及到服务器环境的设置以及与其它组件的协同工作。本文将详细介绍使用mod_jk1.2模块将JBoss应用服务器与Apache HTTP服务器集成的过程,以便创建高效、可扩展...

Global site tag (gtag.js) - Google Analytics