any follow up on this? would like to see a saner gwt-servlet.jar
include a 6M jar just to serve a single RemoteServlet is just absurd ... On Friday, June 25, 2010 4:09:29 AM UTC+8, Freeland Abbott wrote: > > Right now, if you pore through servlet/build.xml, we build gwt-servlet.jar > by first building the classes for gwt-user, then filtering out a set of > blacklisted packages from it. As we've added things, of course, the secret > blacklist has grown stale, and that explains why some > never-sane-in-server-context things like UiBinder are now packaged into > gwt-servlet.jar. > > I'd like to change that, but it's breaking at least theoretically if > anyone *had* found a server-side use, sane or otherwise. The fix would > be easy (nothing stops you from dropping gwt-user onto your server, I > suppose), and I'd be a bit disturbed if you did have a sane server-side > use... but hey, I've been surprised before, which is why I'm asking. > > It also turns out that I-think-too-many legitimately server-side things > (like, say, RPC) need to touch "client" packaged classes for things like > enums and whatnot, and the classes with those enums then pull in a large > list of other client things, and so client-only stuff like DomEvents turns > out actually to be required. I'm not---at least not yet---talking about > refactoring those things, just about getting to a whitelist algorithm for > gwt-servlet with a minimal set of "grandfathered" client classes. > > As near as I can tell, the new definition of gwt-servlet would be, using > ant ** and * wildcards mixed with shell-style comments 'cause XML ones are > ugly: > > # what I actually want to keep in gwt-servlet: > > com/google/gwt/**/server/**/*.java > com/google/gwt/**/shared/**/*.java > > # What server and shared RPC need, despite the "client" designation: > > com/google/gwt/user/client/rpc/*.java > com/google/gwt/user/client/rpc/impl/AbstractSerialization*.java > com/google/gwt/user/client/rpc/RpcRequestBuilder.java > com/google/gwt/http/client/*.java > com/google/gwt/xhr/client/ReadyStateChangeHandler.java > com/google/gwt/xhr/client/XMLHttpRequest.java > com/google/gwt/user/client/Timer.java > com/google/gwt/user/client/rpc/SerializationException.java > com/google/gwt/user/client/rpc/SerializationStreamReader.java > com/google/gwt/user/client/rpc/SerializationStreamWriter.java > com/google/gwt/rpc/client/ast/*.java > com/google/gwt/rpc/client/impl/CommandSerializationStreamWriterBase.java > com/google/gwt/rpc/client/impl/CommandClientSerializationStreamReader.java > com/google/gwt/rpc/client/impl/EscapeUtil.java > com/google/gwt/user/client/rpc/impl/ClientSerializationStreamWriter.java > com/google/gwt/user/client/rpc/impl/Serializer.java > com/google/gwt/rpc/client/impl/HasValuesCommandSink.java > com/google/gwt/rpc/client/impl/SimplePayloadSink.java > com/google/gwt/rpc/client/impl/RemoteException.java > > # and what they need, at least for compilation, and i'm not sure about all > code paths: > > com/google/gwt/core/client/GWT.java > com/google/gwt/core/client/JavaScriptException.java > com/google/gwt/core/client/JavaScriptObject.java > com/google/gwt/core/client/JsArray.java > com/google/gwt/core/client/Duration.java > com/google/gwt/core/client/Scheduler.java > com/google/gwt/user/client/Window.java > com/google/gwt/user/client/Window*.java > com/google/gwt/user/client/BaseListenerWrapper.java > com/google/gwt/user/client/Element.java > com/google/gwt/user/client/Event.java > com/google/gwt/user/client/EventListener.java > com/google/gwt/user/client/EventPreview.java > com/google/gwt/user/client/NativePreviewEvent.java > com/google/gwt/user/client/History.java > com/google/gwt/user/client/impl/HistoryImpl.java > com/google/gwt/user/client/impl/DomImpl.java > com/google/gwt/user/client/HistoryListener.java > com/google/gwt/user/client/Cookies.java > com/google/gwt/user/client/ui/Widget.java > com/google/gwt/user/client/ui/HasWidgets.java > com/google/gwt/user/client/ui/AbsolutePanel.java > com/google/gwt/user/client/ui/ComplexPanel.java > com/google/gwt/user/client/ui/IndexedPanel.java > com/google/gwt/user/client/ui/InsertPanel.java > com/google/gwt/user/client/ui/Panel.java > com/google/gwt/user/client/ui/AttachDetachException.java > com/google/gwt/user/client/ui/UIObject.java > com/google/gwt/user/client/ui/RootPanel.java > com/google/gwt/user/client/ui/WidgetCollection.java > com/google/gwt/event/dom/client/HasNativeEvent.java > com/google/gwt/event/dom/client/PrivateMap.java > com/google/gwt/event/dom/client/DomEvent.java > com/google/gwt/user/client/DOM.java > com/google/gwt/user/client/impl/DOMImpl.java > com/google/gwt/user/client/impl/WindowImpl.java > com/google/gwt/dom/client/*.java > com/google/gwt/core/client/impl/Impl.java > com/google/gwt/core/client/impl/StackTraceCreator.java > com/google/gwt/core/client/impl/SchedulerImpl.java > com/google/gwt/core/client/impl/AsyncFragmentLoader.java > com/google/gwt/core/client/JsArrayInteger.java > com/google/gwt/core/client/JsArrayString.java > com/google/gwt/core/client/RunAsyncCallback.java > com/google/gwt/i18n/client/constants/*.java > com/google/gwt/i18n/client/impl/*.java > com/google/gwt/i18n/client/*.java > > > As you might guess, I made that list by making gwt-servlet compile itself > instead of using user, which probably isn't smart from a compile-time > perspective. We can look at exactly what's "really" reachable from the > server and shared root set, to see if we can prune at least the silly ones > like DomEvent. My main objective, though, is to get to a whitelist > approach at all. Anyone think that's a bad idea? > -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
