Не удалось загрузить слой промежуточного программного обеспечения com.sap.mw.jco.rfc.MiddlewareRFC - PullRequest
0 голосов
/ 18 марта 2011

Я использую Sap Jco для подключения к базе данных SAP с внешним интерфейсом Java (JSF), когда я подключаюсь к SAP с помощью:

try {
 mConnection =JCO.createClient("400", // SAP client
  "c3026902", // userid
  "********", // password
  "EN", // language
  "iwdf5020", // host name
  "00"); // system number
 mConnection.connect();
}
catch (Exception ex) {
 ex.printStackTrace();
 System.exit(1);
}

Проблема, с которой я сталкиваюсь, - это запуск приложенияв первый раз данные отображаются, но при повторном запуске появляется сообщение «Не удалось загрузить слой промежуточного программного обеспечения» com.sap.mw.jco.rfc.MiddlewareRFC '»

Может ли кто-нибудь помочь мне в разрешениивопрос ?????

Ответы [ 3 ]

1 голос
/ 19 марта 2011

Похоже, API не может загрузить файлы родного драйвера. SAP Java Connector состоит из встроенной части среды выполнения, которая осуществляет актуальную связь, и Java API, который оборачивает эту функциональность Java-API. Java API находится внутри sapjco.jar, а встроенные драйверы находятся, например, в окнах внутри librfc32.dll и sapjcorfc.dll. Поместите эти dll в ваш системный путь (например, windows: C: \ WiNDOWS \ system32), и он должен запуститься.

Приветствие Себастьян

0 голосов
/ 22 сентября 2013

Определение соединения SAP:

Для версии 3,0 библиотеки sapjco существует множество полезной информации.Чтобы создать соединение, следуйте инструкциям в:

http://www.browseye.com/linkShare.html?url=http://help.sap.com/saphelp_nwpi711/helpdata/en/46/fb807cc7b46c30e10000000a1553f7/content.htm?bwsCriterion=%22Setting%20Up%20Connection%22&bwsMatch=1&bwsCriterion=%22Setting%20Up%20Connection%22&bwsMatch=1

Есть несколько вещей, которые вы должны принять во внимание:

Поместите файл dll втам же, где баночка.DLL должна быть верной версией для вашей операционной системы и архитектуры, в противном случае вы получите собственную ошибку библиотеки.

Пример кода для создания соединения с сервером.

public class StepByStepClient
{
    static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
    static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
    static
    {
        Properties 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,   "homofarber");
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "laska");
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");
        createDestinationDataFile(DESTINATION_NAME1, connectProperties);
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,    "10");
        createDestinationDataFile(DESTINATION_NAME2, connectProperties);

    }

    static void createDestinationDataFile(String destinationName, Properties connectProperties)
    {
        File destCfg = new File(destinationName+".jcoDestination");
        try
        {
            FileOutputStream fos = new FileOutputStream(destCfg, false);
            connectProperties.store(fos, "for tests only !");
            fos.close();
        }
        catch (Exception e)
        {
            throw new RuntimeException("Unable to create the destination files", e);
        }
    }


    public static void step1Connect() throws JCoException
    {
        JCoDestination destination =    JCoDestinationManager.getDestination(DESTINATION_NAME1);
        System.out.println("Attributes:");
        System.out.println(destination.getAttributes());
        System.out.println();
    }
}

В SAPJco3.0 соединения строятся из информации, содержащейся в «Destination».

В примере документации используется файл свойств для сохранения «Destination».Однако это небезопасный способ сохранить информацию о соединении.Как указано в документации в выделенном абзаце, вы можете увидеть следующую ссылку.

http://help.sap.com/saphelp_nwpi711/helpdata/en/48/5fb9f9b523501ee10000000a421937/content.htm?bwsCriterion=%22In%20practice%20you%20should%20avoid%20this%20for%20security%20reasons.%22&bwsMatch=1

Вы можете сохранить информацию о соединении в базе данных или любой другой системе хранения, если выСоздание пользовательского «DestinationDataProvider» В Примерах, поставляемых с библиотекой SAPJco, есть пример того, как создать пользовательский DestinationDataProvider.

0 голосов
/ 23 марта 2011

Находятся ли ваши DLL в папке system32 Windows?Если да, возможно, вы используете неправильную архитектуру?(x64 DLL на 32-битной или наоборот) Кроме того, являются ли DLL той же версии, что и Java API?Если у вас установлен SAP GUI, могут быть более старые библиотеки DLL.

...