<answer id="arch-what">
<p>
J2EE Server Module provides support for development of J2EE modules and framework for J2EE server management and for J2EE deployment in IDE.
</p>
</answer>
<answer id="arch-overall">
<p>
There are two separate api/spi sets in j2eeserver. The devmodules
api/spi is for j2ee development modules (web, j2ee app, etc). The
plugins api/spi is for server plugins.
</p>
<api name="J2EEServer-devmodules"type="export" category="friend" group="java">
The spi classes are to be subclassed by dev modules and to be provided
as cookies on the development nodes. The api classes are to be used to
add actions/properties/additional cookies to those nodes.
</api>
<api name="J2EEServerAPI"type="export" category="friend" group="java">
J2EE Server module serves as an integration point between two kinds of netbeans modules:
<ul>
<li><b>server plugins</b> (or simply plugins) that integrate various J2EE servers in IDE</li>
<li><b>devmodules</b> - netbeans modules that provide support for development
of J2EE modules (web module, EJB module, J2EE Application, etc.) and need to deploy
and debug them on J2EE servers.</li>
</ul>
</api>
<api type="export" group="layer" name="PluginRegistration" category="friend"url="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/doc-files/plugin-layer-file.html"> XML layer contract for registration of server plugins and instances that implement
optional capabilities of server plugins. Plugins with
server-specific deployment decriptor files should declare the full
list in XML layer as specified in the document
plugin-layer-file.html from the above link.
</api>
<p>
J2EE Server Module enables using <a href="https://jcp.org/aboutJava/communityprocess/mrel/jsr088/index.html">
J2EE Deployment API</a> (aka JSR88) for plugin integration.
In addition to that it provides its own API for <b>incremental deployment</b>,
JSP compilation, server life cycle management (start/stop/debugging mode).
Incremental deployment deploys J2EE modules to server from a directory structure
without requiring to build a J2EE module archive. It also takes the minimal action
to "refresh" the module on server rahter then completely undeploying and deploying
the module (or even restarting the server).
</p>
<p>J2EE Server Module is integrated with Ant based project system (in the devmodules part)
and deployment is called via custom Ant task (works only in IDE).
</p>
<p>
J2EE Server module provides basic UI for server managment and server plugins
can provide customized UI.
</p>
<p>
J2EE Server module furthermore supports devmodules by managing server libraries i.e. it provides compilation classpath and registers sources and javadocs in lookup.
</p>
<usecase id="deployment-api-compliant-server" name="Deployment API Compliant Server Plugin">
A server that supports Deployment API can be integrated in IDE so that J2EE
modules could be deployed to it from IDE. It will not support incremental
deployment, start/stop server or JSP compilation.
<p><i>
In order to do this the plugin needs to add the server classes that
implement Deployment API to classpath and to provide a
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/doc-files/plugin-layer-file.html">
layer file</a> that will
register the server in IDE (specifying URL, user name and password) and
register a
<a href="https://docs.oracle.com/javaee/1.4/api/javax/enterprise/deploy/spi/factories/DeploymentFactory.html">
factory class</a> from Deployment API. Beside that server plugin must also implement some other mandatory APIs.
</i></p>
</usecase>
Each server plugin is required to provide J2EE platform which devmodules may use beside else for obtaining compilation classpath.
<p><i>Plugins must implement
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/J2eePlatformImpl.html">
J2eePlatformImpl</a> interface and register it via <a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/J2eePlatformFactory.html">J2eePlatformFactory</a> whose instance must be registered in the module <a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/doc-files/plugin-layer-file.html">
layer file</a>. Devmodules then may access the <a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/api/J2eePlatform.html">J2eePlatform</a> interface via the <a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/api/Deployment.html">Deployment</a> utility class.
</i></p>
</usecase>
<usecase id="plugin-with-optional-apis" name="Server Plugin that implements optional APIs">
In practice plugins will likely want to provide tighter integration with IDE
that is specified in Deployment API.
They can choose to provide any or all of the optional parts of plugin API:
incremental deployment, JSP compilation, start/stop/debug server support and/or
customized UI for server management.
<p><i>
In order to do this plugin needs to implement the additional interfaces
and register their instances in module
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/doc-files/plugin-layer-file.html">
layer file</a> and in
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/doc-files/netbeans-deployment-dtd.txt">
netbeans-deployment.xml</a>
file (an additional config file with specified DTD).
</i>
</p>
Registration of various optional functionality is done via
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/OptionalDeploymentManagerFactory.html">
OptionalDeploymentManagerFactory</a>.
<p>The classes and/or interfaces related to each optional functionality are:</p>
<li><b>Incremental deployment:</b>
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/IncrementalDeployment.html">IncrementalDeployment</a>,
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/ModuleChangeDescriptor.html">ModuleChangeDescriptor</a>,
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/AppChangeDescriptor.html">AppChangeDescriptor</a>,
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/TargetModuleIDResolver.html">TargetModuleIDResolver</a>,
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/common/api/EjbChangeDescriptor.html">EjbChangeDescriptor</a>,
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/common/api/OriginalCMPMapping.html">OriginalCMPMapping</a>
(note that the last two classes are also used in devmodules part of API).
</li>
<li><b>Installation of Server Instances:</b>
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/InstanceProperties.html">InstanceProperties</a>
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/api/InstanceCreationException.html">InstanceCreationException</a>
</li>
<usecase id="devmodule-integration" name="Devmodule integration" >
Implemetors of J2EE module support (web module, EJB module, J2EE Application, etc.)
need to be able to provide UI to deploy or debug their modules on any J2EE server
that has a corresponding plugin and supports given type of J2EE module.
The deployment needs to work both for Deployment API based (full) deployment
and incremental deployment (this needs to be transparent for the devmodules).
Devmodules also need to provide UI for editing server specific configuration
files existing in their sources. In addition to that, J2EE Application devmodule
needs to communicate with devmodules representing J2EE module that constitute
the application.
<p>
<i>
This is achieved by devmodules implementing the devmodules API. Typically this
will be done by subclassing a support class in devmodules SPI but direct
implementation of devmodules API should also be possible. The mechanism of
discovery of devmodule implementation is highly dependent on how devmodules
are represented in IDE (e.g. as projects or DataObjects) so this part of API
is the least stable.
</i>
</p>
<p>
The API package provides abstractions of
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/api/J2eeModule.html">J2eeModule</a> and a
J2EEModuleContainer
(a module that contains other modules, such as J2EE application).
Two utility classes provide direct access to
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/api/Deployment.html">Deployment</a>
and to a
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/api/JSPServletFinder.html">JSPServletFinder</a>.
The SPI package contains utility classes for implementation of J2eeModule and J2eeModuleContainer.
</p>
</usecase>
<usecase id="customization-of-server-registry-ui" name="Customization of Server Registry UI" >
Some products (JSC) requested to make it possible to replace the whole server
registry UI.
<p><i>Not supported in current version.</i></p>
</usecase>
<usecase id="Retrieve-data-sources" name="Retrieve data sources">
<p>
Data sources created in the module and deployed on the server are accessed using
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/spi/J2eeModuleProvider.html">J2eeModuleProvider</a> methods.
Some of the module's data source may be already also deployed on the server, in that case the client
is responsible for the duplicity handling.
</p>
<p>
Retrieval from a server is done by a server plugin. Core part of the functionality is done by
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/DatasourceManager.html">DatasourceManager</a> implementation
which is exposed from a server plugin through
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/OptionalDeploymentManagerFactory.html">OptionalDeploymentManagerFactory</a>.
</p>
<p>
Retrieval from a module is done with help of
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/spi/J2eeModuleProvider.ConfigSupport.html">ConfigSupport</a> and
ConfigurationSupport implementations.
</p>
</usecase>
<usecase id="Create-data-source" name="Create data source">
<p>
Data sources are created in a module if they does not exist yet on a server or in a module itself.
Data sources are stored in the server-specific format, only some common subset of attributes
(e.g. JNDI name, username, url, ...) is provided by a creator.<br/>
</p>
<p>
Data source creation is done with help of
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/devmodules/spi/J2eeModuleProvider.ConfigSupport.html">ConfigSupport</a> and
ConfigurationSupport implementations.
In case of conflict with existing data source, the first conflicting data source is passed to the thrown
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/common/api/DatasourceAlreadyExistsException.html">DatasourceAlreadyExistsException</a>.
</p>
</usecase>
<usecase id="Deploy-data-sources" name="Deploy data source">
<p>
Data sources stored in a module are deployed (registered) on a module's target server at the beginning
of a module deployment.<br/>
</p>
<p>
Data sources stored in a module are retrived and passed to a
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/plugins/spi/DatasourceManager.html">DatasourceManager</a> instance
for deploying (registering) on the server.<br/>
All module data sources having a conflict with some existing server data source are passed to the thrown
<a href="@TOP@/org/netbeans/modules/j2ee/deployment/common/api/DatasourceAlreadyExistsException.html">DatasourceAlreadyExistsException</a>.
</p>
</usecase>
</answer> <!-- <questionid="arch-time"when="init"> Whatarethetimeestimatesofthework? <hint> Pleaseexpressyourestimatesofhowlongthedesign,implementation, stabilizationarelikelytolast.Howmanypeoplewillbeneededto implementthisandwhatistheexpectedmilestonetheworkshouldbe ready. </hint> </question>
-->
<answer id="arch-time">
J2EEPlatform is planned to be added before promoE feature freeze. The work for promoD includes
support for J2EE Application (not part of 3.6), projectization of devmodules part, small fixes
in API and general stabilization. The work is planned to be done before promoD feature freeze.
</answer> <!-- <questionid="arch-quality"when="init"> Howthequalityofyourcodewillbetestedand howfutureregressionsaregoingtobeprevented? <hint> Whatkindoftestingyouwanttouse?What/howmuchareaoffunctionality shouldbecoveredbythetests? </hint> </question>
-->
<answer id="arch-quality">
There is a test plugin and test devmodule and a set of unit tests that tests
the basic funtionality of server registry and deployment.
</answer> <!-- </category> <categoryid="dep"name="Projectandplatformdependencies"> <questionid="dep-nb"when="init"> WhatotherNetBeansprojectsandmodulesdoesthisonedependon? <hint> Ifyouwant,describesuchprojectsasimportedAPIusing the<code><apiname="identification"type="importorexport"category="stable"url="whereisthedescription"/></code> </hint> </question>
-->
<answer id="dep-nb">
<defaultanswer generate='none' />
It uses these API's:
<ul>
<li>
<api
name="OpenAPI" type="import"
group="java"
category="official" url="../index.html">
NetBeans Open APIs
</api>
Using various parts of Open API.
</li>
<li>
<api
name="InputOutputAPI" type="import"
group="java"
category="official" url="@org-openide-io@/index.html">
NetBeans Open APIs
</api>
Used for displaying event log.
</li>
<li>
<api
name="LoadersAPI" type="import"
group="java"
category="official" url="@org-openide-loaders@/index.html">
NetBeans Loaders API
</api>
</li>
<li>
<api
name="schema2beans" type="import"
group="java"
category="stable"
>
Schema2beans infrastructure
</api>
Used for implementation of Deployment API, to work with DD and server specific DD.
Also used for NetbeansDeployment (generate S2B beans from DTD).
</li>
<li>
<api
name="SettingAPI" type="import"
group="java"
category="official" url="@org-netbeans-modules-settings@/index.html">
Setting API
</api>
For for storing settings (e.g. about deployed modules) in xml.
</li>
<li>
<api
name="XMLAPI" type="import"
group="java"
category="stable" url="@org-netbeans-api-xml@/index.html"> XML API
</api> XML editing and validation of server specific deployment descriptors.
</li>
<li>
<api
name="ProjectsAPI" type="import"
group="java"
category="devel" url="@org-netbeans-modules-projectapi@/index.html">
Projects API
</api>
Used for communication between j2eeserver and devmodules (devmodules are
expected to be implemented as projects).
</li>
<li>
<api
name="JavaSupportAPIs" type="import"
group="java"
category="devel" url="@org-netbeans-api-java@/index.html">
Java Support APIs
</api>
Used for registration of server libraries' sources and javadocs.
</li>
<li>
<api
name="ProjectLibrariesAPI" type="import"
group="java"
category="devel" url="@org-netbeans-modules-project-libraries@/index.html">
Project Libraries API
</api>
Used for definition of server libraries.
</li>
</ul>
</answer> <!-- <questionid="dep-non-nb"when="init"> WhatotherprojectsoutsideNetBeansdoesthisonedependon? <hint> Somenon-NetBeansprojectsarepackagedasNetBeansmodules (see<ahref="http://libs.netbeans.org/">libraries</a>)and itispreferredtousethisapproachwhenmoremodulesmay dependonsuchthird-partylibrary. </hint> </question>
-->
<answer id="dep-non-nb">
<ul>
<li>
<api name="J2EEEditor"type="import" category="third"url="" group="java">
For editing server specific deployment descriptors.
</api>
</li>
<li>
<api name="EJB"type="import" category="standard"url="https://jcp.org/aboutJava/communityprocess/final/jsr019/index.html" group="java">
Enterprise JavaBeans API 2.0.
</api>
</li>
<li>
<api name="J2EEDeploymentAPI"type="import" category="standard"url="https://jcp.org/aboutJava/communityprocess/mrel/jsr088/index.html" group="java">
J2EE Deployment API/JSR88.
Part implemented by this module and used to communicate with
server plugins and with devmodules.
</api>
</li>
</ul>
</answer> <!-- <questionid="dep-platform"when="init"> Onwhichplatformsdoesyourmodulerun?Doesitruninthesame wayoneach? <hint> IfyourmoduleisusingJNIordealswithspecialdifferencesof OSeslikefilesystems,etc.pleasedescribeherewhattheyare. </hint> </question>
-->
<answer id="dep-platform"> 100% pure Java. It should run anywhere.
</answer> <!-- <questionid="dep-jre"when="final"> WhichversionofJREdoyouneed(1.2,1.3,1.4,etc.)? <hint> Itisexpectedthatifyourmodulerunson1.xthatitwillrun on1.x+1ifno,statethatplease.Alsodescribeherecaseswhere yourundifferentcodeondifferentversionsofJREandwhy. </hint> </question>
-->
<answer id="dep-jre">
<b>JRE 1.4</b> or <b>JRE 1.3</b> with <b>JAXP</b>
</answer> <!-- <questionid="dep-jrejdk"when="final"> DoyourequiretheJDKoristheJREenough? </question>
-->
<answer id="dep-jrejdk">
JRE is enough.
</answer> <!-- </category> <categoryid="deploy"name="Deployment"> <questionid="deploy-jar"when="impl"> DoyoudeployjustmoduleJARfile(s)orotherfilesaswell? <hint> IfyourmoduleconsistsofjustonemoduleJARfile,justconfirmthat. IfitusesmorethanoneJAR,describewheretheyarelocated,how theyrefertoeachother. IfitconsistofmoduleJAR(s)andotherfiles,pleasedescribe whatistheirpurpose,whyotherfilesarenecessary.Please makesurethatinstallation/uninstallationleavesthesystem instateasitwasbeforeinstallation. </hint> </question>
-->
<answer id="deploy-jar">
The module deploys the following jar files into <code>modules/</code> folder: (XXX names are out of date)
<ul>
<li>j2eeapis.jar - a modules that represents the APIs (ejb, jsr88, jsr77, jmxri)</li>
<li>j2eeeditor.jar - an external library with the editor for server specific configuration files</li>
<li>ext/ejb20.jar - EJB API 2.0</li>
<li>ext/jsr88javax.jar - J2EE Deployment API</li>
</ul>
</answer> <!-- <questionid="deploy-nbm"when="impl"> CanyoudeployanNBMviatheUpdateCenter? <hint> Ifnotwhy? </hint> </question>
-->
<answer id="deploy-nbm">
Yes
</answer> <!-- <questionid="deploy-shared"when="final"> Doyouneedtobeinstalledinthesharedlocationonly,orintheuserdirectoryonly, orcanyourmodulebeinstalledanywhere? <hint> Installationlocationshallnotmatter,ifitdoesexplainwhy. Consideralsowhether<code>InstalledFileLocator</code>canhelp. </hint> </question>
-->
<answer id="deploy-shared">
Anywhere.
</answer> <!-- <questionid="deploy-packages"when="init"> Arepackagesofyourmodulemadeinaccessiblebynotdeclaringthempublic? <hint> NetBeansmodulesystemallowsrestrictionofaccessrightsto publicclassesofyourmodulefromothermodules.Thisprevents unwanteddependenciesofothersonyourcodeandshouldbeused wheneverpossible(<ahref="http://www.netbeans.org/download/javadoc/OpenAPIs/org/openide/doc-files/upgrade.html#3.4-public-packages"> publicpackages </a>).Ifyoudonotrestrictaccesstoyourclassesyouare makingittooeasyforotherpeopletomisuseyourimplementation details,thatiswhyyoushouldhavegoodreasonfornot restrictingpackageaccess. </hint> </question>
-->
<answer id="deploy-packages">
Yes. Public packages of J2EE Server API module are specified in module manifest file :<br/><br/>
<b>OpenIDE-Module-Public-Packages: org.netbeans.modules.j2ee.deployment.devmodules.**, org.netbeans.modules.j2ee.deployment.plugins.**</b><br/>
</answer>
<answer id="deploy-dependencies">
Tomcat plugin (org.netbeans.modules.tomcat5), Web Core (org.netbeans.modules.web.core), Web Projects (org.netbeans.modules.web.project).
</answer> <!-- </category> <categoryid="compat"name="Compatibilitywithenvironment"> <questionid="compat-i18n"when="impl"> Isyourmodulecorrectlyinternationalized? <hint> Correctinternationalizationmeansthatitobeysinstructions at<ahref="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html"> NetBeansI18Npages</a>. </hint> </question>
-->
<answer id="compat-i18n">
Yes.
</answer> <!-- <questionid="compat-standards"when="init"> Doesthemoduleimplementordefineanystandards?Isthe implementationexactordoesitdeviatesomehow? </question>
-->
<answer id="compat-standards">
The modules implements parts of Deployment API.
There are no deviations from standard, only extensions of the standard.
</answer> <!-- <questionid="compat-version"when="impl"> Canyourmodulecoexistwithearlierandfuture versionsofitself?Canyoucorrectlyreadalloldsettings?Willfuture versionsbeabletoreadyourcurrentsettings?Canyouread orpolitelyignoresettingsstoredbyafutureversion? <hint> Veryhelpfulforreadingsettingsistostoreversionnumber there,sofutureversionscandecidewhetherhowtoread/convert thesettingsandolderversionscanignorethenewones. </hint> </question>
-->
<answer id="compat-version">
The only settings are the server registry content and information about deployed modules.
The format of server registry content settings is stable and should be read by
future versions. It is stored in textual form (.nbattrs). The information about deployed
modules is a transient cache that allows the IDE to remember what modules were deployed
to which server from the IDE.
</answer> <!-- </category> <categoryid="resources"name="Accesstoresources"> <questionid="resources-file"when="final"> Doesyourmoduleuse<code>java.io.File</code>directly? <hint> NetBeansprovidealogicalwrapperoverplainfilescalled <code>org.openide.filesystems.FileObject</code>that providesuniformaccesstosuchresourcesandisthepreferred waythatshouldbeused.Butofcoursetherecanbesituationswhen thisisnotsuitable. </hint> </question>
-->
<answer id="resources-file">
java.io.File is used in plugin API. The motivation is to make this API independent on
netbeans since this is an extension of the contracts defined in J2EE Deployment API.
Filesystems are used for actual access to file contents and should also be used in plugin
code.
</answer> <!-- <questionid="resources-layer"when="final"> Doesyourmoduleprovideownlayer?Doesitcreateanyfilesor foldersinit?Whatitistryingtocommunicatebythatandwithwhich components? <hint> NetBeansallowsautomaticanddeclarativeinstallationofresources bymodulelayers.Moduleregisterfilesintoappropriateplaces andothercomponentsusethatinformationtoperformtheirtask (buildmenu,toolbar,windowlayout,listoftemplates,setof options,etc.). </hint> </question>
-->
<answer id="resources-layer">
The server registry is defined in layer, it creates folder for registration of plugins
and server instances. Server registry instance is registered in layer file. Two handlers
for xml settings are registered for the settings related to deployed modules.
</answer> <!-- <questionid="resources-read"when="final"> Doesyourmodulereadanyresourcesfromlayers?Forwhatpurpose? <hint> Asthisissomekindofintermoduledependency,itisakindofAPI. Pleasedescribeitandclassifyaccordingto <ahref="http://openide.netbeans.org/tutorial/api-design.html#categories"> commonstabilitycategories</a>. </hint> </question>
-->
<answer id="resources-read">
J2eeserver reads server registry contents from layer. This includes installed server
plugins as well as individual server instances (installations).
</answer> <!-- <questionid="resources-mask"when="final"> Doesyourmodulemask/hide/overrideanyresourcesprovidedbyothermodulesin theirlayers? <hint> Ifyoumaskafileprovidedbyanothermodule,youprobablydepend onthatanddonotwanttheothermoduleto(forexample)change thefile'sname.ThatmoduleshallthusmakethatfileavailableasanAPI ofsomestabilitycategory. </hint> </question> </category>
-->
<answer id="resources-mask">
No.
</answer> <!-- <categoryid="lookup"name="Lookupofcomponents"> <questionid="lookup-lookup"when="init"> Doesyourmoduleuse<code>org.openide.util.Lookup</code> tofindanycomponentstocommunicatewith?Whichones? <hint> Pleasedescribetheinterfacesyouaresearchingfor,where aredefined,whetheryouaresearchingforjustoneormoreofthem, iftheorderisimportant,etc.Alsoclassifythestabilityofsuch APIcontract. </hint> </question>
-->
<answer id="lookup-lookup">
Folder lookup is used to read the definition of plugin (the additional optional
functionality registered by the plugin).
</answer> <!-- <questionid="lookup-register"when="final"> Doyouregisteranythingintolookupforothercodetofind? <hint> Doyouregisterusinglayerfileorusing<code>META-INF/services</code>? Whoissupposedtofindyourcomponent? </hint> </question>
-->
<answer id="lookup-register">
Implementations of<br/>
<api group="lookup" type="import"
category="devel"
name="org.netbeans.spi.java.queries.SourceForBinaryQueryImplementation" url="@org-netbeans-api-java-classpath@/org/netbeans/spi/java/queries/SourceForBinaryQueryImplementation.html"
>Information about where Java sources corresponding to binaries
can be found.</api><br/>
<api group="lookup" type="import"
category="devel"
name="org.netbeans.spi.java.queries.JavadocForBinaryQueryImplementation" url="@org-netbeans-api-java@/org/netbeans/spi/java/queries/JavadocForBinaryQueryImplementation.html"
>Information about where Javadocs corresponding to binaries
can be found.</api><br/>
Both implementations are registered using <code>META-INF/services</code>.
</answer> <!-- <questionid="lookup-remove"when="final"> Doyouremoveentriesofothermodulesfromlookup? <hint> Why?Ofcourse,thatispossible,butitcanbedangerous.Isthemodule youraremaskingresourcefromawareofwhatyouaredoing? </hint> </question>
-->
<answer id="lookup-remove">
No.
</answer> <!-- </category>
--> <!-- classification of interfaces --> <!-- package names --> <!-- <categoryid="exec"name="ExecutionEnvironment"> <questionid="exec-property"when="impl"> Isexecutionofyourcodeinfluencedbyanyenvironmentor Javasystem(<code>System.getProperty</code>)property? <hint> Ifthereisapropertythatcanchangethebehaviorofyour code,somebodywilllikelyuseit.Youshoulddescribewhatitdoes andthe<ahref="http://openide.netbeans.org/tutorial/api-design.html#life">stabilitycategory</a> ofthisAPI.Youmayuse <pre> <apitype="export"group="property"name="id"category="private"url="http://..."> descriptionoftheproperty,whereitisused,whatitinfluence,etc. </api> </pre> </hint> </question>
-->
<answer id="exec-property">
No.
</answer> <!-- <questionid="exec-component"when="impl"> Isexecutionofyourcodeinfluencedbyany(string)property ofanyofyourcomponents? <hint> Often<code>JComponent.getClientProperty</code>,<code>Action.getValue</code> or<code>PropertyDescriptor.getValue</code>,etc.areusedtoinfluence abehaviorofsomecode.Thisofcourseformsaninterfacethatshould bedocumented.Alsoifonedependsonsomeinterfacethatanobject implements(<code>componentinstanceofRunnable</code>)thatformsan APIaswell. </hint> </question>
-->
<answer id="exec-component">
No.
</answer> <!-- <questionid="exec-classloader"when="impl"> Doesyourcodecreateitsownclassloader(s)? <hint> Abitunusual.Pleaseexplainwhyandwhatfor. </hint> </question>
-->
<answer id="exec-classloader">
No.
</answer> <!-- <questionid="exec-reflection"when="impl"> DoesyourcodeuseJavaReflectiontoexecuteothercode? <hint> ThisusuallyindicatesamissingorinsufficientAPIintheother partofthesystem.Iftheothersideisnotawareofyourdependency thiscontractcanbeeasilybroken. </hint> </question>
-->
<answer id="exec-reflection">
Reflection is used in deployment configuration code.
</answer> <!-- <questionid="exec-privateaccess"when="final"> Areyouawareofanyotherpartsofthesystemcallingsomeof yourmethodsbyreflection? <hint> Ifso,describethe"contract"asanAPI.Likelyprivateorfriendone,but stillAPIandconsiderrewriteofit. </hint> </question>
-->
<answer id="exec-privateaccess">
No.
</answer> <!-- <questionid="exec-process"when="impl"> Doyouexecuteanexternalprocessfromyourmodule?Howdoyouensure thattheresultisthesameondifferentplatforms?Doyouparseoutput? Doyoudependonresultcode? <hint> Ifyoufeedaninput,parsetheoutputpleasedeclarethatasanAPI. </hint> </question>
-->
<answer id="exec-process">
No.
</answer> <!-- <questionid="exec-introspection"when="impl"> Doesyourmoduleuseanykindofruntimetypeinformation(<code>instanceof</code>, workwith<code>java.lang.Class</code>,etc.)? <hint> CheckforcaseswhenyouhaveanobjectoftypeAandyoualso expectitto(possibly)beoftypeBanddosomespecialaction.That shouldbedocumented.Thesameappliesonoperationsinmeta-level (Class.isInstance(...),Class.isAssignableFrom(...),etc.). </hint> </question>
-->
<answer id="exec-introspection">
No.
</answer> <!-- <questionid="exec-threading"when="impl"> Whatthreadingmodels,ifany,doesyourmoduleadhereto? <hint> IfyourmodulecallsforeignAPIswhichhaveaspecificthreadingmodel, indicatehowyoucomplywiththerequirementsformultithreadedaccess (synchronization,mutexes,etc.)applicabletothoseAPIs. IfyourmoduledefinesanyAPIs,orhascomplexinternalstructures thatmightbeusedfrommultiplethreads,declarehowyouprotect dataagainstconcurrentaccess,raceconditions,deadlocks,etc., andwhethersuchrulesareenforcedbyruntimewarnings,errors,assertions,etc. Examples:aclassmightbenon-thread-safe(likeJavaCollections);might befullythread-safe(internallocking);mightrequireaccessthroughamutex (andmayormaynotautomaticallyacquirethatmutexonbehalfofaclientmethod); mightbeabletorunonlyintheeventqueue;etc. Alsodescribewhenanyeventsarefired:synchronously,asynchronously,etc. Ideas:<ahref="http://core.netbeans.org/proposals/threading/index.html#recommendations">ThreadingRecommendations</a>(inprogress) </hint> </question>
-->
<answer id="exec-threading">
N/A
</answer> <!-- </category> <categoryid="format"name="Formatoffilesandprotocols"> <questionid="format-types"when="impl"> Whichprotocolsandfileformats(ifany)doesyourmodulereadorwriteondisk, ortransmitorreceiveoverthenetwork? </question>
-->
<answer id="format-types">
None.
</answer> <!-- <questionid="format-dnd"when="impl"> Whichprotocols(ifany)doesyourcodeunderstandduringDrag&Drop? <hint> OftenNode'sdealwithclipboardbyusageof<code>Node.drag,Node.getDropType</code>. Checkyourcodeforoverridingthesemethods.Btw.iftheyarenotoverridden,they bydefaultdelegateto<code>Node.clipboardCopy,Node.clipboardCutandNode.pasteTypes</code>. </hint> </question>
-->
<answer id="format-dnd">
None.
</answer> <!-- <questionid="format-clipboard"when="impl"> Whichdataflavors(ifany)doesyourcodereadfromorinsertto theclipboard(byaccesstoclipboardonmeanscallingmethodson<code>java.awt.datatransfer.Transferable</code>? <hint> OftenNode'sdealwithclipboardbyusageof<code>Node.clipboardCopy,Node.clipboardCutandNode.pasteTypes</code>. Checkyourcodeforoverridingthesemethods. </hint> </question>
-->
<answer id="format-clipboard">
None.
</answer> <!-- </category> <categoryid="performance"name="PerformanceandScalability"> <questionid="perf-startup"when="final"> Doesyourmodulerunanycodeonstartup? </question>
-->
<answer id="perf-startup">
No.
</answer> <!-- <questionid="perf-exit"when="final"> Doesyourmodulerunanycodeonexit? </question>
-->
<answer id="perf-exit">
Yes. The module will stop any server instances that were started from IDE.
</answer> <!-- <questionid="perf-scale"when="init"> Whichexternalcriteriainfluencetheperformanceofyour program(sizeoffileineditor,numberoffilesinmenu, insourcedirectory,etc.)andhowwellyourcodescales? <hint> Pleaseincludesomeestimates,thereareothermoredetailed questionstoanswerinlaterphasesofimplementation. </hint> </question>
-->
<answer id="perf-scale">
Size of devmodules (number of files) - the code does time stamp checking for devmodule files.
Size of deployment descriptors and their in-memory representation. Size of platform libraries' sources and javadocs.
</answer> <!-- <questionid="perf-limit"when="init"> Arethereanyhard-codedorpracticallimitsinthenumberorsizeof elementsyourcodecanhandle? </question>
-->
<answer id="perf-limit">
Not aware of any.
</answer> <!-- multithreading --> <!-- <questionid="perf-mem"when="final"> Howmuchmemorydoesyourcomponentconsume?Estimate witharelationtothenumberofwindows,etc. </question>
-->
<answer id="perf-mem">
<p>
The amount of memory consumed by server registry corresponds with the number of
plugins and number of registered server instances. This is a small number, typically 2 or 3, certainly less then 10. The amount of memory consumed by server libraries depends on Java Support module implementation details.
</p>
<p>
Memory consumption of configuration UI crresponds with number of open
configuration editors.
</p>
</answer> <!-- <questionid="perf-wakeup"when="final"> Doesanypieceofyourcodewakeupperiodicallyanddosomething evenwhenthesystemisotherwiseidle(nouserinteraction)? </question>
-->
<answer id="perf-wakeup">
No.
</answer> <!-- <questionid="perf-progress"when="final"> Doesyourmoduleexecuteanylong-runningtasks? <hint>Longrunningtasksshouldneverblock AWTthreadasitbadlyhurtstheUI <ahref="http://performance.netbeans.org/responsiveness/issues.html"> responsiveness</a>. Taskslikeconnectingover network,computinghugeamountofdata,compilation bedoneasynchronously(forexample using<code>RequestProcessor</code>),definitivelyitshould notblockAWTthread. </hint> </question>
-->
<answer id="perf-progress">
Yes, starting /stopping server and performing deploymen is a long running task.
It is not done in AWT thread and a progress bar is displayed.
</answer> <!-- <questionid="perf-huge_dialogs"when="final"> Doesyourmodulecontainanydialogsorwizardswithalargenumberof GUIcontrolssuchascomboboxes,lists,trees,ortextareas? </question>
-->
<answer id="perf-huge_dialogs">
No.
</answer> <!-- <questionid="perf-menus"when="final"> Doesyourmoduleusedynamicallyupdatedcontextmenus,or context-sensitiveactionswithcomplicatedenablementlogic? </question>
-->
<answer id="perf-menus">
No.
</answer> <!-- <questionid="perf-spi"when="init"> Howtheperformanceofthepluggedincodewillbeenforced? <hint> Ifyouallowforeigncodetobepluggedintoyourownmodule,how doyouenforce,thatitwillbehavecorrectlyandfastandwillnot negativelyinfluencetheperformanceofyourownmodule? </hint> </question>
-->
<answer id="perf-spi">
There is no way to enforce performance of SPI.
Performance of module does depend on plugin and devmodule performance.
</answer> <!-- Copy this above the tag! -->
<!-- <questionid="exec-ant-tasks"when="impl"> Doyoudefineorregisteranyanttasksthatothercanuse? <hint> Ifyouprovideananttaskthatuserscanuse,youneedtobevery carefulaboutitssyntaxandbehaviour,asitmostlikelyformsan APIforendusersandasthereisalotofendusers,theirreaction whensuchAPIgetsbrokencanbeprettystrong. </hint> </question>
-->
<answer id="exec-ant-tasks">
<p>
Module itself does not define any. There exist ant tasks related to this
functionality in j2ee.ant.
</p>
</answer>
<!-- <questionid="resources-preferences"when="final"> DoesyourmoduleusespreferencesviaPreferencesAPI?DoesyourmoduleuseNbPreferencesor orregularJDKPreferences?Doesitread,writeorboth? Doesitsharepreferenceswithothermodules?Ifso,thenwhy? <hint> Youmayuse <apitype="export"group="preferences" name="preferencenodename"category="private"> descriptionofindividualkeys,whereitisused,whatit influences,whetherthemodulereads/writeit,etc. </api> DuetoXMLIDrestrictions,ratherthan/org/netbeans/modules/foogivethe"name"asorg.netbeans.modules.foo. NotethatifyouuseNbPreferencesthisnamewillthenbethesameasthecodenamebaseofthemodule. </hint> </question>
-->
<answer id="resources-preferences">
<p>
Module use its own way to store information about registered instances.
</p>
</answer>
</api-answers>
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.35Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.