我是GWT开发新手。我开始维护GWT(2.7)应用程序并需要修改日志记录。所以我决定使用MDC(MappedDiagnosticContext)并编写一个servlet Filter来将用户名放在MDC中,如下所示:
public class MDCServletFilter implements Filter {
/* (non-Javadoc)
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {}
/* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest aRequest, ServletResponse aResponse, FilterChain aFilterChain)
throws IOException, ServletException {
try {
// get the session from the request ...
HttpServletRequest tempRequest = (HttpServletRequest)aRequest;
HttpSession tempSession = tempRequest.getSession();
// get the currently logged in user ...
String tempUser = (String)tempSession.getAttribute(Authorizer.USER_KEY);
// if user is logged in, put the name into the MDC ...
if (tempUser != null && tempUser.trim().length() > 0) {
MDC.put(Authorizer.USER_KEY, tempUser);
}
// at least call the other filter ..
aFilterChain.doFilter(tempRequest, aResponse);
} finally {
// finally remove the user name from the MDC ...
MDC.remove(Authorizer.USER_KEY);
}
}
/* (non-Javadoc)
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig arg0) throws ServletException {}
}
web.xml :
<web-app>
<!-- MDC Filter -->
<filter>
<filter-name>MDCServletFilter</filter-name>
<filter-class>
foo.bar.filter.MDCServletFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>MDCServletFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- MDC Filter END -->
现在,当我在日食(6月)启动应用程序时,我收到警告:
[WARN] Server class 'foo.bar.filter.MDCServletFilter' could not be found in the web app, but was found on the system classpath
过滤器类驻留在“通用”项目中,而不是在GWT项目中,因为我们有更多的GWT项目可以使用一些常见的类。如果我将过滤器类放入GWT项目中,则不会发生警告。
那么,我如何设置GWT项目以使用其他项目的类而没有任何警告?
提前致谢!
答案 0 :(得分:0)
详细信息取决于您的构建工具和/或IDE,但目标是将所有服务器端类放在webapp WEB-INF
中(在WEB-INF/classes
中,这可能是WEB-INF/lib
您的GWT项目的案例,或 $('#sa_drag_block li').draggable({
helper: "clone",
});
$('#sa_drop_block').droppable({
drop: function (e, ui) {
$(ui.draggable).clone().appendTo($(this));
}
});
中的JAR。
在将webapp部署到servlet容器时,无论如何都是必要的(除非你打算将你的&#34; common&#34;项目部署为servlet容器中的共享库)。
答案 1 :(得分:0)
我通过将公共项目的源文件夹链接到GWT项目来解决它:
GWT项目的属性 - &gt; JavaBuild路径 - &gt; “链接来源......” - &gt;
将“链接文件夹位置:”设置为“WORKSPACE_LOC / someSecondProject / src”,然后将“文件夹名称:”从“src”重命名为例如“CommonGWT.src”。
此设置将其他项目的所有源代码编译为GWT项目的“WEB-INF / classes”,并且Eclipse GWT已满足。