У нас есть приложение gwt, которое использует jcifs для извлечения имени пользователя из нашего домена NT. Вот фрагмент нашего файла web.xml:
<filter>
<filter-name>NtlmHttpFilter</filter-name>
<filter-class>com.xxx.gwt.server.MyNTLMFilter</filter-class>
<init-param>
<param-name>jcifs.netbios.wins</param-name>
<param-value>192.168.109.20</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>its</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NtlmHttpFilter</filter-name>
<url-pattern>/trunkui/greet</url-pattern>
</filter-mapping>
<!-- Servlets -->
<servlet>
<servlet-name>greetServlet</servlet-name>
<servlet-class>com.xxx.gwt.server.GreetingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>greetServlet</servlet-name>
<url-pattern>/trunkui/greet</url-pattern>
</servlet-mapping>
Итак, в настоящее время, когда пользователь заходит на наш сайт, он получает около 2 или 3 повторяющихся запросов с просьбой войти в домен, даже если он уже есть (вы должны быть в домене, чтобы получить доступ к нашему приложению). Я хотел бы, по крайней мере, уменьшить подсказку, чтобы она случалась только один раз. Поэтому я собирался сделать фиктивный сервлет из "/trunkui/dummy" и позволить ему вызываться только тогда, когда я запрашиваю имя. У удаленного сервлета есть метод, который мы вызываем асинхронно:
public String getUser() {
String userAgent = "";
try {
userAgent = getThreadLocalRequest().getUserPrincipal().getName();
int slashIdx = -1;
if ((slashIdx = userAgent.indexOf('\\')) >= 0)
userAgent = userAgent.substring(slashIdx + 1);
} catch (Exception npe) {
npe.printStackTrace();
}
return userAgent;
}
Поэтому я хотел сделать какой-то вызов фиктивному сервлету, чтобы сделать запрос домена, но я не уверен, как это сделать из удаленной службы gwt. Или если есть лучший способ сделать это?