Я пытаюсь подключиться к системе SAP AS JAVA и манипулировать UME.
У меня есть EJB WebService (HelloWorldEJB) в системе Java, я пытаюсь запустить HelloWorldEJB из службы Restful внешнего приложения (AppService).
Таким образом, поток похож на:
Приложение UI5 (AppWeb) -> AppService -> HelloWorldEJB
Я могу нажать HelloWorldEJB, но когда я проверяю вошедшего в систему пользователя, его показывают как «Гость». Это потому, что авторизация пользователя не выполняется в HelloWorldEJB.
Как я могу войти в систему с пользователем в HelloWorldEJB, используя UME API?
Код AppService для вызова HelloWorldEJB:
@Path("/services")
public class RestService {
@GET
@Path("/hello")
public String sayHello() {
String result = "";
try {
java.net.URL url = new java.net.URL("http:wsldUrl");
javax.xml.namespace.QName qName = new javax.xml.namespace.QName("http://sap.com/qName", "HelloBeanService");
HelloBeanService client = new HelloBeanService(url, qName);
HelloBean helloService = client.getHelloBeanPort();
result = helloService.sayHello();
} catch (Exception e) {
result = e.toString();
}
return result;
}
}
Код HelloWorldEJB для проверки зарегистрированного пользователя:
@WebService(endpointInterface = "com.sap.tutorial.helloworld.HelloBeanRemote", portName = "HelloBeanPort", serviceName = "HelloBeanService", targetNamespace = "http://sap.com/tutorial/helloworld/")
@Stateless(name="HelloBean")
public class HelloBean implements HelloBeanRemote, HelloBeanLocal {
private String message = "Hello, ";
public String sayHello() {
IUser user = UMFactory.getAuthenticator().getLoggedInUser();
return message + user.getDisplayName();
}
}
Я должен знать, что мы должны использовать
ILogonAuthentication logonAuthentication = UMFactory.getLogonAuthenticator();
и передайте HttpServletRequest и HttpServletResponse
logonAuthentication.logon(request, response, "default");
Но я не могу получить HttpServletRequest и HttpServletResponse для входа в систему.
Я не использую клиент Servlet для доступа к EJB.