Имаме 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. Или ако има по-добър начин да направите това?