最近项目中使用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
分享到:
相关推荐
JBoss Forge IntelliJ IDEA插件发表在 提供对IntelliJ IDEA中的命令和向导的支持。 要显示命令列表,请按Ctrl+Alt+4 。 在MacOSX上,使用Command + Option + 4 。安装使用IDE内置插件系统: 首选项>插件>市场>搜索...
您会发现: - src/main/resources 中对应的 jboss forge 版本为 ZIP - src/main/resources 中 3.0.10 版本的 sapjco3.jar 从命令行将 sapjco3 jar 安装到本地 Maven 存储库(可在插件 POM 中找到): mvn install:...
Forge 的 Hibersap 插件用于生成类以供 Hibersap 框架使用以连接到 SAP 系统的插件。 该插件允许在给定的 SAP 系统中搜索函数名称,并生成所有必需的类和配置文件,以将给定的函数与 Hibersap 框架一起使用。 您可以...
### Spring与JBOSS整合知识点详解 #### 一、引言 随着企业级应用的不断发展,集成各种中间件成为一种趋势。Spring框架以其强大的依赖注入(Dependency Injection, DI)及面向切面编程(Aspect Oriented ...
简单插件 SimplistAddon 插件使您能够阅读简单的 JBoss Forge 插件代码。 依赖项:无(或) 设置 此插件需要以下安装步骤。 addon-install-from-git -url 这个站点
01-roaster:有关Roaster API的示例02-炉:有关炉容器的示例03-template:有关在Forge中使用模板的示例附加组件一些示例需要外部插件并需要安装: addon-install --groupId org.jboss.forge.addon --name angularjs...
疯狂构建工具锻造插件一个 JBoss Forge 插件,通过 WildFly 构建工具提供 WildFly 9+ 应用服务器的交互式配置。 该插件支持通过对引用工件的分析提供的参数值的自动完成,例如功能包中可用的所有配置文件和子系统。 ...
rest提供了一个REST服务,用于在使用与JBoss Forge一起工作 文献资料 有关更多详细信息,请参见 基于Fabric8 Forge的系统测试 要检查系统测试,请查看 构建插件 要尝试加载项: cd addons mvn install 然后,您...
适用于JBoss Forge 2的Docker插件。 Docker插件为Forge项目中的Docker技术提供支持。该插件导出服务以供其他插件使用。 安装 从Forge CLI: addon-install-from-git --url ...
《JBoss性能优化整合》是一份深度探讨Jboss应用服务器性能提升的重要资料,它集结了作者反复试验与研究的心得,旨在为读者提供实用而全面的优化策略。Jboss作为一款开源的企业级Java应用服务器,其性能表现直接影响...
JBOSS与APACHE的整合 JBOSS与APACHE的整合是指将JBOSS应用服务器与APACHE Web服务器集成在一起,以提高Web应用程序的性能和可扩展性。这种整合方式可以将静态网页的请求交给APACHE服务器处理,而将动态网页的请求...
【JBoss学习全集多本书整合】集合了丰富的JBoss相关知识,涵盖了JBoss服务器的配置、管理和优化等多个方面,是深入理解与掌握JBoss的理想资料。JBoss,作为一个开源的应用服务器,基于Java EE(现在被称为Jakarta EE...
本文将详细讲解如何在JBoss应用服务器上整合Hibernate和EJB。 **一、EJB简介** EJB是Java EE平台的一部分,它提供了一种标准的方式来创建分布式、事务处理、安全和可管理的企业级服务。EJB类型主要包括会话Bean...
JBake 的 JBoss Forge 插件 这是一个为 JBake 项目提供 JBoss Forge Add-on 的项目。 Currently this project is in-development. 依赖项:无(或) 取决于 添加在 出口 可选的 DEP1 是的 不 DEP2 是的 是的 设置...
【标题】:“IIS6整合jboss4.2 配置开发包”涉及的主要知识点是将Internet Information Services (IIS) 6.0与Java应用服务器JBOSS 4.2进行集成,以便在Windows环境中运行Java应用程序。这通常是为了利用IIS的Web...
总的来说,“EJB3+JBOSS5+JPA整合”是一个集成了企业级服务、持久化管理和应用服务器的复杂体系,它为企业级Java应用提供了强大的后端支持。开发者需要深入理解EJB3的编程模型、JPA的持久化机制以及JBOSS5的配置和...
7. JBoss Forge:这是一个快速应用开发工具,可以帮助开发者生成、配置和修改Java EE项目结构,无需手动编写大量配置文件。 8. CDI(Contexts and Dependency Injection)支持:帮助开发者利用CDI来实现依赖注入,...
JBoss配置与集成是企业级Java应用程序部署的关键环节,它涉及到服务器环境的设置以及与其它组件的协同工作。本文将详细介绍使用mod_jk1.2模块将JBoss应用服务器与Apache HTTP服务器集成的过程,以便创建高效、可扩展...