340 likes | 567 Views
WTP Server Tools Open House. Tim deBoer deboer@ca.ibm.com. Agenda. Plugins Contributors API Status Quality Current work items. WST Server Plugins. Server Tools Framework org.eclipse.wst.server.core* org.eclipse.wst.server.ui* org.eclipse.wst.server.util
E N D
WTP Server Tools Open House Tim deBoer deboer@ca.ibm.com
Agenda • Plugins • Contributors • API Status • Quality • Current work items
WST Server Plugins • Server Tools Framework • org.eclipse.wst.server.core* • org.eclipse.wst.server.ui* • org.eclipse.wst.server.util • Adds notion of a “server” to Eclipse • Starting/stopping servers, publishing, targeting projects, adding & removing modules • Framework for adding new server types • Servers view, wizards, editor framework, etc. • Ability to choose resource and Run on Server • Depends only on Eclipse * Contains API
WST Internet Plugins • TCP/IP Monitor • org.eclipse.wst.internet.monitor.core** • org.eclipse.wst.internet.monitor.ui** • Monitor for Web pages, Web services • Shows request from client and the server’s response • Useful for understanding applications, debugging, etc. • Supports TCP/IP and HTTP • View bytes, images, or XML ** Contains provisional API
WST Internet Plugins • Web Browser utilities • org.eclipse.wst.internet.webbrowser • The internal Web browser and support for launching external browsers moved into Eclipse in 3.1M6 • Utilities for the Eclipse browser plugin • Easily switch between browsers, toolbar button to open internal browser
WST Internet Plugins • Proxy Settings • org.eclipse.wst.internet.proxy • Manage internet proxy configuration and JRE properties • Preference page • HTTP proxy servers and firewalls • Authenticating proxy servers • SOCKS • Likely to move to Eclipse 3.2
WST Internet Plugins • Internet Cache • org.eclipse.wst.internet.cache • Caches documents requested from the internet • Currently only used by the XML resolver
JST Server Plugins • J2EE server utilities • org.eclipse.jst.server.core* • org.eclipse.jst.server.ui • Generic Server support • org.eclipse.jst.server.generic.core* • org.eclipse.jst.server.generic.serverdefinition • org.eclipse.jst.server.generic.ui • Adds support for J2EE servers to be defined using plain XML files • No code required, add support for a new server in minutes • .serverdefinition plugin contains adapters for WebLogic, JONaS, and JBoss
JST Server Plugins • Apache Tomcat Server support • org.eclipse.jst.server.tomcat.core • org.eclipse.jst.server.tomcat.ui • Apache Geronimo Server support • org.eclipse.jst.server.geronimo.core • org.eclipse.jst.server.geronimo.ui
Server Tools Contributors • Gorkem Ercan • Generic server support and adapters for JONaS, WebLogic, JBoss • Larry Isaacs (SAS) • Tomcat support • Tim deBoer (IBM) • Server Tools framework, TCP/IP monitor, Tomcat support • Elson Yuen (IBM) • Server Tools framework • Ted Bashor, Thomas Yip, Konstantin Komissarchik (BEA) • Server Tools API • Tim Francis (IBM) • Geronimo support
API Status • Done! … almost • API is basically ready to go. Based on past experience we’re reasonably comfortable with the current content • Reasonable validation through several servers and API users in WTP • BEA and IBM are both in the process of validating the API internally • Provisional APIs: • TCP/IP Monitor • Parts of server tools relating to features
Quality • Initial code contribution was shipped in previous products. Although it has undergone lots of cleanup and refactoring since then, much of the code is still stable • We’ve been fixing bugs continuously to keep the code relatively stable throughout • Bugs have been slowing growing – 30 currently on queue • Still some work to do to get ship-ready
Current Work Items - Assembly • Each server type has it’s own requirements on assembly • Does it happen on build or on publish? • Do utility projects get jarred up? Does complete EAR file get created? • The current .deployables directory is server specific and should not be in the workspace • Working with J2EE team and BEA to define an assembly mechanism • Provide support to assemble modules in .metadata • Assembly can be done via a builder or as part of a publish • Everything is under the server’s control
Current Work Items - Features • Proposal from BEA to enable/disable fine grained features on a module/component • Allows better control over classpath, UI, and which servers support a module that has extensions • Recently deferred to 1.1 • Marking affected classes as provisional API • Still investigating to keep options open and migration low
For more information • Component overviews • Overviews exist for all three components (wst.internet, wst.server, jst.server) on the WTP website • Some documentation about specific function: • Run on Server • Generic servers • EclipseCon presentation • API – javadoc in code or in online help • Bugzilla • Feel free to open enhancement requests for unclear javadoc, further documentation you’d like to see, etc.
Help Needed • We’re not done yet! • If you are planning on using or building on WTP, we can use your help with: • API review • Bug fixes • Testing • JUnit tests • Feedback
Thank you Questions & Comments
What exactly is Server Tools? • Sub-component of WTP in both WST and JST • Server Tools provides: • Targeting applications to a specific server • Adding & removing projects from servers • Publishing applications to a server • Starting & stopping servers • Implementations for specific servers: • Tomcat, JBoss, …
Server Tools Components • The server tools framework supports any server, not just J2EE • Support in both of the WTP subprojects: • wst.server • Server Tools framework (.server.core) • Server Tools UI (.server.ui) • jst.server • J2EE server tools (.server.*) • Generic J2EE server framework (.server.generic.*) • Tomcat, JBoss support, …
Users of Server Tools APIs • Server Providers • Add support for additional servers • E.g. Tomcat, JBoss • Module Providers • Add additional module types and Run on Server support • E.g. J2EE Tools • Client App Providers • Provide clients for Run on Server • E.g. Web browser • Client Users • Use API to configure and launch servers, check runtime target, etc. • E.g. Web Services, DD editors
Model Overview Module 1 Server 1 Runtime 1 Module 2 Server 2 Module 3 Server 2
Modules • A module is content that can be deployed to a server • Typically a project or folder (e.g. Web module) within the workspace, but can consist of anything • Extension Points: • moduleTypes • Define a new type of module • moduleFactories • Provide factory for creating and discovering modules of a specific type • Provides module delegates with a specified interface
Runtimes • A runtime is an installed server on the local hard-drive • Executables, Jar files, etc. • Used for build-time compilation, validation • Extension points: • runtimeTypes • Define a new type of runtime and delegate class • runtimeLocator • Automatically locate new runtimes on disk • runtimeTargetHandler • Change what happens when a project (containing modules) is targeted to a particular runtime • Modify classpath, validation, etc.
Servers • A server is an instance of (handle to) a real server • Add & remove modules • Publish modules • Usually supports starting & stopping • Often based on a local runtime • Extension points: • serverTypes • Define a new type of server and delegate classes • Handles publishing, starting & stopping server, etc.
Run on Server support • Run > Run on Server menu item allows users to quickly choose/create a server and run module • Allows user to choose or create a server • Starts server, publish • Launches client application (e.g. Web browser) • To enable on a selection: • Adapt object to ILaunchable to make Run menu appear (via Eclipse debug support) • ModuleArtifactAdapter extension point provides enablement support • Adapt object to IModuleArtifact • Each server provides support via launchableAdapter ext. point • Clients (e.g. Web browser) can add support via clients ext. point
UI Support • Provided by org.eclipse.wst.server.ui • Servers view for creating and configuring servers • Preferences and property pages, etc. • Extension points: • images • Provide images for runtimes, servers, etc. • editorPages and editorPageSections • Provide sections and pages for the server editor • wizardFragments • Provide pages to appear when servers are created
Generic Server Introduction • Extension to WTP server tools • RuntimeTypes • ServerTypes • Design has its roots from Lomboz, • Community already familiar with its use • A special server and runtime that can adjust behaviour • Server type definition files determine behaviour
Server type definiton file • XML based meta information • Validated against an XSD • Introduced using “org.eclipse.jst.server.generic.core.serverdefinition” extension • Virtually two parts • Properties • Derived information • Properties are variables that users provide values using server tooling UI • Derived info is information used by the generic server to perform server tooling functionality
Server type definition file example . . <property id="serverRootDirectory" label="Application Server Directory:" type="directory" context="runtime" default="/your_server_root/appservers/jboss-3.2.3" /> . . <start> <class>org.jboss.Main</class> <workingDirectory>${serverRootDirectory}/bin</workingDirectory> <programArguments>-c ${serverConfig}</programArguments> <vmParameters></vmParameters> <classpathReference>jboss</classpathReference> </start>
Making sense of the server type definition files • <classpath> : define a classpath used by other elements • <start>: information for starting a server(classpath,class,vmarguments, etc.) • <stop>: information used for stopping a server • <port>:port(s) to start server on • <project>: classpath to provide when creating a project for this runtime • <module>: information for each supported modules, such as publisher and type • <publisher>: data used by different publishers when publishing to this server • <property>:define variable data to be collected from user
Using metadata for UI • Property type determines the type of widget used • Context determines whether this is a server or runtime property • Currently 4 types are supported • Directory • String • Boolean • File
UI example <property id="jonasRoot" label="JonAS Installation Directory:" type="directory" context="runtime" default="/your_server_root/JOnAS-4.1.4" /> <property id="jonasBase" label="JonAS Configuration Directory:" type="directory" context="runtime" default="/your_server_root/JOnAS-4.1.4" /> <property id="classPath" label="Classpath Variable:" type="directory" context="runtime" default="/your_server_root/JOnAS-4.1.4" />
Generic publishers • Handles publishing modules to servers • Only part where you may need to code • Introduced using org.eclipse.jst.server.generic.antpublisher extension point • Extend GenericPublisher class • It is optional you may choose to use an existing publisher • ANT build file based publisher is available part of the core package • More general publishers to come...