لوتس نوتس:جافا يعمل بشكل جيد عندما على وكيل ، ولكن فشل عندما على ليب جافا
-
21-12-2019 - |
سؤال
لقد أنشأت مستهلك خدمة ويب.أريد أن استدعاء الأسلوب الذي يدعى setCredentials
حتى أتمكن من تمرير معلومات المصادقة الخاصة بي إلى الخدمة.
لدي اثنين من الكيانات التي تستورد المستهلك خدمة الويب ، وكيل ومكتبة جافا ، من المفترض أن يتم استدعاؤها من لوتوسكريبت.
الشيء الغريب هو أن كل شيء يعمل بشكل جيد على وكيل أعمالي.مكتبة يجمع موافق ، ولكن عندما يتم تنفيذه من لوتوسكريبت ويصل إلى هذا الخط
stub.setCredentials("xxxx","ttttt");
جافا يلقي java.lang.nosuchmethod
خطأ.ماذا يمكنني أن أفعل خطأ?
شكرا جزيلا لكم مقدما على مساعدتكم.
تحديث:
ربما لم أشرح بشكل كامل.يحدث الإجراء بالكامل داخل جافا.هذا نوع من الاختبار.على لوتوسكريبت أنا مجرد استدعاء منشئ مع تسلسل جيتكلاس / كريتيوبجيكت.الرمز داخل المنشئ (من أجل الاختبار).ويبدو بالضبط نفس ، سواء على وكيل اختبار بلدي وعلى مكتبة جافا.الإجابة على سؤالك ، جيسون ، لا ، سيتكريدينتيالز هو جزء من لوتس معين.الدومينو.أنواع.واجهة بورتيبيباس.عندما تستهلك .وسدل لإنشاء مستهلك خدمة ويب ، أستطيع أن أرى من ولدت .ملفات جافا التي واجهة بلدي يمتد بورتيبيباس والبعيد
المحلول
ليس من الممكن استدعاء مستهلك خدمة ويب جافا من لوتوسكريبت (لس 2 ج).هذا هو مفصل في سر سودي7أودكي8 / أبار لو42772.وهذا ينطبق أيضا على استدعاء وكيل جافا الذي بدوره يدعو المستهلك جافا.
سوف تحتاج إلى إنشاء المستهلك لوتوسكريبت للوصول إلى خدمة الويب في لوتوسكريبت.ومع ذلك هناك قيود معروفة في لوتوسكريبت التي يمكن أن تمنع بعض خدمات الويب من أن تستهلك.
- 40 حرف متغير / حد الطريقة
- يمكن أن تتسبب رسائل الصابون الكبيرة للغاية في حدوث مشكلات في الأداء / التعطل.
- الكلمات الرئيسية المحجوزة عدم تطابق في لس/وسدل / سواب.
ومع ذلك ، قمت بإنشاء موفر العينة التالي.
Class wsClass
Function hello ( helloText As String) As String
hello = "Hello " + helloText
End Function
End Class
في جبهة الخلاص الوطني تم تخزينها أنا تعيينها للسماح للمستخدمين مصادقة فقط.
ثم قمت بإنشاء مكتبات المستهلك لس وجافا المستهلك من وسدل ولدت.
بعد ذلك قمت بإنشاء نموذج التعليمات البرمجية التالي.
لوتوسكريبت
Use "LsWebServiceConsumer"
Sub Initialize
Dim stub As New Wsclass
Dim answer As String
Call stub.Setcredentials("testuser", "password")
answer = stub.Hello("world")
MsgBox answer
End Sub
جافا (تمت إضافة مكتبة المستهلك إلى الوكيل)
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
WsClass stub = new WsClassServiceLocator().getDomino();
stub.setCredentials("testuser", "password");
System.out.println(stub.HELLO("world"));
} catch(Exception e) {
e.printStackTrace();
}
}
}
كل من هذه عملت كما هو متوقع مع المستهلك الخاصة بهم.