如何通过Jco创建到SAP的JSP连接?

2020-08-19 01:22发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想创建一个JSP并从SAP获取数据。 我遵循了sJco 3.0的官方教程,并停留在第一步中。 我真的很困惑 可以给个提示吗? 下面是正式的示例代码。

公共类StepByStepClient
 {
 静态字符串DESTINATION_NAME1 =" ABAP_AS_WITHOUT_POOL";
 静态字符串DESTINATION_NAME2 =" ABAP_AS_WITH_POOL";
 静态的
 {
 属性connectProperties = new Properties();
 connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST,
 " ls4065");
 connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,
 " 85");
 connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT,
 " 800");
 connectProperties.setProperty(DestinationDataProvider.JCO_USER,
 "同志发烧友");
 connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD,
 "阿拉斯加州");
 connectProperties.setProperty(DestinationDataProvider.JCO_LANG,
 " en");
 createDestinationDataFile(DESTINATION_NAME1,
 connectProperties);
 connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPA
 CITY," 3");
 connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMI
 T," 10");
 createDestinationDataFile(DESTINATION_NAME2,
 connectProperties);
 }
 静态无效createDestinationDataFile(String destinationName,
 属性connectProperties)
 {
 File destCfg = new File(destinationName +"。jcoDestination");
 尝试
 {
 FileOutputStream fos = new FileOutputStream(destCfg,
 假);
 connectProperties.store(fos,"仅用于测试!");
 fos.close();
 }
 捕获(异常e)
 {
 抛出新的RuntimeException("无法创建
 目标文件",e);
 }
 }
 公共静态无效step1Connect()引发JCoException
   {
 JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME1);
 System.out.print(destination.getAttributes());
   }

 

1。我不知道createDestinationDataFile方法的用途是什么? 它只是创建一个文件,不是吗? 所有已在DestinationProvider中设置的属性,那么为什么需要一个文件?

2。我将示例代码复制到项目中,并且可以正常工作。 但是,当我尝试创建一个JSP并称之为错误时,发生了错误。 我怀疑配置文件ABAP_AS_WITHOUT_POOL.property是原因。 有人之前有相同的错误吗? 错误如下。

 08:49:20,035错误[stderr](默认任务2)java.lang.UnsatisfiedLinkError:java.library.path中没有sapjco3
 08:49:20,036 java.lang.ClassLoader.loadLibrary上的[stderr]错误(默认任务2)(未知源)
 08:49:20,049 io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)出现错误[stderr](默认任务2)
 08:49:20,049 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)出现[stderr](默认任务2)
 08:49:20,186 io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)出现错误[stderr](默认任务2)
 08:49:20,187 io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)出现错误[stderr](默认任务2)
 ...
 08:49:20,229错误[io.undertow.request](默认任务2)UT005023:对/TestWebsite/1.jsp的异常处理请求:javax.servlet.ServletException:java.lang.ExceptionInInitializerError:JCo初始化因Java而失败。  lang.UnsatisfiedLinkError:java.library.path中没有sapjco3
 在org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:889)
 在org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:818)
 在org.apache.jsp._1_jsp._jspService(_1_jsp.java:165)
 在org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 在org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
 在org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:403)
 在org.apache.jasper.servlet.JspServlet.service(JspServlet.java:347)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 在io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
 在io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
 在io.undertow.jsp.JspFileHandler.handleRequest(JspFileHandler.java:32)
 在io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
 ...
 引起原因:java.lang.ExceptionInInitializerError:JCo初始化失败,并出现java.lang.UnsatisfiedLinkError:java.library.path中没有sapjco3
 在com.sap.conn.jco.rt.MiddlewareJavaRfc。(MiddlewareJavaRfc.java:226)
 在com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:98)
 在com.sap.conn.jco.rt.JCoRuntimeFactory。(JCoRuntimeFactory.java:23)
 在java.lang.Class.forName0(本地方法)
 在java.lang.Class.forName(未知来源)
 在com.sap.conn.jco.JCo.createJCo(JCo.java:52)
 在com.sap.conn.jco.JCo。(JCo.java:26)
 在com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:104)
 在SCOfetch.JCOtest.step4QueryTable(JCOtest.java:217)
 在org.apache.jsp._1_jsp._jspService(_1_jsp.java:149)
 ...另外45个
 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想创建一个JSP并从SAP获取数据。 我遵循了sJco 3.0的官方教程,并停留在第一步中。 我真的很困惑 可以给个提示吗? 下面是正式的示例代码。

公共类StepByStepClient
 {
 静态字符串DESTINATION_NAME1 =" ABAP_AS_WITHOUT_POOL";
 静态字符串DESTINATION_NAME2 =" ABAP_AS_WITH_POOL";
 静态的
 {
 属性connectProperties = new Properties();
 connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST,
 " ls4065");
 connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,
 " 85");
 connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT,
 " 800");
 connectProperties.setProperty(DestinationDataProvider.JCO_USER,
 "同志发烧友");
 connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD,
 "阿拉斯加州");
 connectProperties.setProperty(DestinationDataProvider.JCO_LANG,
 " en");
 createDestinationDataFile(DESTINATION_NAME1,
 connectProperties);
 connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPA
 CITY," 3");
 connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMI
 T," 10");
 createDestinationDataFile(DESTINATION_NAME2,
 connectProperties);
 }
 静态无效createDestinationDataFile(String destinationName,
 属性connectProperties)
 {
 File destCfg = new File(destinationName +"。jcoDestination");
 尝试
 {
 FileOutputStream fos = new FileOutputStream(destCfg,
 假);
 connectProperties.store(fos,"仅用于测试!");
 fos.close();
 }
 捕获(异常e)
 {
 抛出新的RuntimeException("无法创建
 目标文件",e);
 }
 }
 公共静态无效step1Connect()引发JCoException
   {
 JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME1);
 System.out.print(destination.getAttributes());
   }

 

1。我不知道createDestinationDataFile方法的用途是什么? 它只是创建一个文件,不是吗? 所有已在DestinationProvider中设置的属性,那么为什么需要一个文件?

2。我将示例代码复制到项目中,并且可以正常工作。 但是,当我尝试创建一个JSP并称之为错误时,发生了错误。 我怀疑配置文件ABAP_AS_WITHOUT_POOL.property是原因。 有人之前有相同的错误吗? 错误如下。

 08:49:20,035错误[stderr](默认任务2)java.lang.UnsatisfiedLinkError:java.library.path中没有sapjco3
 08:49:20,036 java.lang.ClassLoader.loadLibrary上的[stderr]错误(默认任务2)(未知源)
 08:49:20,049 io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)出现错误[stderr](默认任务2)
 08:49:20,049 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)出现[stderr](默认任务2)
 08:49:20,186 io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)出现错误[stderr](默认任务2)
 08:49:20,187 io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)出现错误[stderr](默认任务2)
 ...
 08:49:20,229错误[io.undertow.request](默认任务2)UT005023:对/TestWebsite/1.jsp的异常处理请求:javax.servlet.ServletException:java.lang.ExceptionInInitializerError:JCo初始化因Java而失败。  lang.UnsatisfiedLinkError:java.library.path中没有sapjco3
 在org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:889)
 在org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:818)
 在org.apache.jsp._1_jsp._jspService(_1_jsp.java:165)
 在org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 在org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
 在org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:403)
 在org.apache.jasper.servlet.JspServlet.service(JspServlet.java:347)
 在javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 在io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
 在io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
 在io.undertow.jsp.JspFileHandler.handleRequest(JspFileHandler.java:32)
 在io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
 ...
 引起原因:java.lang.ExceptionInInitializerError:JCo初始化失败,并出现java.lang.UnsatisfiedLinkError:java.library.path中没有sapjco3
 在com.sap.conn.jco.rt.MiddlewareJavaRfc。(MiddlewareJavaRfc.java:226)
 在com.sap.conn.jco.rt.DefaultJCoRuntime.initialize(DefaultJCoRuntime.java:98)
 在com.sap.conn.jco.rt.JCoRuntimeFactory。(JCoRuntimeFactory.java:23)
 在java.lang.Class.forName0(本地方法)
 在java.lang.Class.forName(未知来源)
 在com.sap.conn.jco.JCo.createJCo(JCo.java:52)
 在com.sap.conn.jco.JCo。(JCo.java:26)
 在com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:104)
 在SCOfetch.JCOtest.step4QueryTable(JCOtest.java:217)
 在org.apache.jsp._1_jsp._jspService(_1_jsp.java:149)
 ...另外45个
 
付费偷看设置
发送
3条回答
hengyuye
1楼 · 2020-08-19 02:09.采纳回答

在wildfly 11服务器中。 我在modules文件夹中的dll和jar中创建了一个模块,并在jboss-deployment-structure.xml中指向它并解决了问题。

spaceman01
2楼-- · 2020-08-19 01:55

ricky luo ,请继续回答您的公开问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题
clever101
3楼-- · 2020-08-19 02:10

sapjco3.dll似乎丢失或版本错误。

您是否已安装sapjco3.dll库,并确保已安装JVM和sapjco3。 dll适用于同一平台。

转到"开始">"控制面板">" Java"以检查JVM版本。

否则,请尝试以下链接以获取更多信息:

1。 库的JCO 3问题-UnsatisfiedLinkError [ 求助]-IT组工具箱

2。 https://scn.sap.com/thread/11967

3。 错误:sapJco3加载Java库

一周热门 更多>