This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Import through New WebProject with Existing Sources wizard an web project without web.xml. In the wizard you have to select JavaEE 5 as J2EE platform. Try to run this project. The deployment fails and there are attached informational exceptions in console. Today I have committed the changes which allow import such project and work with the project in the IDE (except deploying to the glassfish).
Created attachment 29801 [details] The exceptions
Can we evaluate this bug now?
I reproduced this just now. I will fix it.
Investigation notes... At the time of this exception, the DDBeanRoot for the configuration does not exist, hence the exception. For project with web.xml, the DDBeanRoot is created during ConfigurationStorage.init() -> createRoot() -> ProjectWebModule.getDeploymentDescriptor() (via j2eeserver API) When web.xml is not present, ProjectWebModule.getDeploymentDescriptor() is returning null, so no root DDBean is created. I should get a (virtual) root bean from the merged annotation provider for this case. I need to determine I got a null because this api has a bug, or because I need to update the code to call a new api to get such a root bean.
I'm reassigning this to j2ee/ddapi module. This bug does not appear with ejb module because the implementation of getDeploymentDescriptor() in ejb jar project returns the root of the merged provider. It is not correct that web project and ejb jar project (or ear project or app client either -- I will check those too now) behave differently here. This is public j2eeserver api and should produce predictable results, regardless of implementation.
Moved to web/dd editor actually. Couldn't find j2ee/ddapi for some reason, maybe I'm just tired, fix if wrongly assigned please.
Pavle, what should be the correct behavior?
I double checked appclient and ear projects -- they also work as expected with no standard descriptor so this bug is with web projects only.
Maybe I'm wrong, but in web project there is not any merged provider. The deployment descriptor is not influence with an annotations. So what should be merged in the web project case?
I forgot mentioned that this works for Tomcat.
The web.xml deployment descriptor is absolutely influenced by annotations in JavaEE5. @Resource -> resource-ref, @Ejb -> ejb-ref, @WebServiceRef -> service-ref, @RunAs -> servlet/run-as, @DeclareRoles -> security-role... there may be more, I don't know if that is an exhaustive list. See also @WebService and it's children implying the fields covered by webservices.xml, but this might get shared with ejb project so I'll cover it with a different bug for now (see issue 74765 for now.) This entire feature was covered by the merged annotation provider requirements document I wrote up months ago.
Regarding my comment above, there does appear to be a merged provider for web -- see DDProvider.getMergedDDRoot(FileObject fo) in ...dd.api.web package, ddapi module. It does not appear to be used anywhere though. Also related to the discussion about how the API J2eeModule.getDeploymentDescriptor() is implemented by the various J2eeModuleProvider's, I confirmed that webservices.xml is not handed as a merged root by either ejb or web projects. In summary, the implementations of this API return a merged DD root that does not depend on existence of the standard descriptor for AppClient and EAR, and EJB for ejb-jar.xml only. They return non-merged DD root (or null if no descriptor file) for EJB's webservices.xml and Web, both web.xml and webservices.xml. The former behavior for all implementations would be best for the perspective of Sun AppServer plugin as the consumer. Regardless, I think all implementations should be consistent and if they cannot be fixed for us, then I need another API by which to acquire the merged root.
From my point of view DDProvider.getDDRoot() should not return the merged root, it would break web.xml refactoring stuff, and possible also web.xml editor. Same goes for webservices.xml, for ejb-jar.xml it doesn't matter since there is no refactoring support or visual editor for it (in Java EE 5 projects). So I'm for having another API for getting the merged root.
Just for the record, the API I have been referring to in my comments above is _not_ DDProvider.getDDRoot(). It's J2eeModule.getDeploymentDescriptor(), as implemented by [Web/Ejb/Ear/AppClient]ModuleProvider.
Agreed that we need the same behavior everywhere. The method BaseBean J2eeModule.getDeploymentDescriptor(String) should definitely return the merged tree. I do not see any use case for BaseBean for the unmerged tree in the server plugin (JSR 88 assumes that it will get a complete model of DD here). If you need access to DD file from j2eeserver API you can use File J2eeModuleProvider.getDeploymentConfigurationFile(String name) and then use DD API. In DD API we should have consistency as well. Either we have getDDRoot and getMergedDDRoot everywhere or we have getDDRoot and getFileDDRoot everywhere. Either way there will be some cases when the code using getDDRoot in 5.0 will need to be changed. I personally think it is more logical to have getMergedDDRoot and keep the getDDRoot only for data from file.
I agree with having getMergedDDRoot() and getDDRoot() for all DDProviders. The J2eeModuleProvider.getDeploymentConfigurationFile(String name) needs to use the merged version. I'll do that. Since so far all usages of EJB and persistence DDProvider.getDDRoot() gets the merged version I'll just refactor them to use the getMergedDDRoot().
fixed. The web, ejb and appclient DDProviders have now methods: BaseBean getMergedDDRoot(MU) - which returns merged s2b tree (annotations+descriptor). BaseBean getDDRoot(FO) - which returns just the descriptor s2b tree. As for the usages of get(Merged)DDRoot() method in web and ejb projects it is not always clear to me whether the code should use the merged or just the descriptor tree. Moreover there is a lot of code like: BaseBean b = DDProvider.getDefault().getDDRoot(fo); <read sg. from the tree> <WRITE the tree to the descriptor file!> .. so it could happen that the annotation data, if obtained from the merged tree, would be saved into the descriptor which is apparently wrong. Therefore I chaged the semantic (DD->merged tree usage) just for the clear cases like the J2eeModule.getDeploymentDescriptor(). Checking in j2ee/clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java; /cvs/j2ee/clientproject/src/org/netbeans/modules/j2ee/clientproject/Attic/AppClientProvider.java,v <-- AppClientProvider.java new revision: 1.1.4.9; previous revision: 1.1.4.8 done Checking in j2ee/ddapi/src/org/netbeans/modules/j2ee/dd/api/client/DDProvider.java; /cvs/j2ee/ddapi/src/org/netbeans/modules/j2ee/dd/api/client/Attic/DDProvider.java,v <-- DDProvider.java new revision: 1.1.4.4; previous revision: 1.1.4.3 done Checking in j2ee/ddapi/src/org/netbeans/modules/j2ee/dd/api/ejb/DDProvider.java; /cvs/j2ee/ddapi/src/org/netbeans/modules/j2ee/dd/api/ejb/DDProvider.java,v <-- DDProvider.java new revision: 1.7.6.9.2.7; previous revision: 1.7.6.9.2.6 done Checking in j2ee/ddapi/src/org/netbeans/modules/j2ee/dd/api/web/DDProvider.java; /cvs/j2ee/ddapi/src/org/netbeans/modules/j2ee/dd/api/web/DDProvider.java,v <-- DDProvider.java new revision: 1.3.28.4.2.5; previous revision: 1.3.28.4.2.4 done Checking in j2ee/ejbapi/src/org/netbeans/modules/j2ee/spi/ejbjar/support/EjbEnterpriseReferenceContainerSupport.java; /cvs/j2ee/ejbapi/src/org/netbeans/modules/j2ee/spi/ejbjar/support/EjbEnterpriseReferenceContainerSupport.java,v <-- EjbEnterpriseReferenceContainerSupport.java new revision: 1.1.2.3.2.3; previous revision: 1.1.2.3.2.2 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/EjbInjectionTargetQueryImplementation.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/Attic/EjbInjectionTargetQueryImplementation.java,v <-- EjbInjectionTargetQueryImplementation.java new revision: 1.1.2.6; previous revision: 1.1.2.5 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/Utils.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/Utils.java,v <-- Utils.java new revision: 1.2.2.3.2.11; previous revision: 1.2.2.3.2.10 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/EntityFromDB.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/Attic/EntityFromDB.java,v <-- EntityFromDB.java new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/EntityGenerator.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/EntityGenerator.java,v <-- EntityGenerator.java new revision: 1.1.2.4.2.1; previous revision: 1.1.2.4 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/MessageGenerator.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/MessageGenerator.java,v <-- MessageGenerator.java new revision: 1.1.2.4.2.6; previous revision: 1.1.2.4.2.5 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/SessionGenerator.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/codegeneration/SessionGenerator.java,v <-- SessionGenerator.java new revision: 1.1.2.8.2.8; previous revision: 1.1.2.8.2.7 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/methodcontroller/EjbMethodController.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/api/methodcontroller/EjbMethodController.java,v <-- EjbMethodController.java new revision: 1.1.2.4.2.1; previous revision: 1.1.2.4 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/cmp/CmpGenerator.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/cmp/Attic/CmpGenerator.java,v <-- CmpGenerator.java new revision: 1.1.2.3.2.7; previous revision: 1.1.2.3.2.6 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/patterns/DTOHelper.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/patterns/DTOHelper.java,v <-- DTOHelper.java new revision: 1.2.2.2.2.1; previous revision: 1.2.2.2 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/ejb/action/GoToSourceActionGroup.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/ejb/action/GoToSourceActionGroup.java,v <-- GoToSourceActionGroup.java new revision: 1.2.2.3.2.1; previous revision: 1.2.2.3 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/ejb/shared/EjbViewController.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/ejb/shared/EjbViewController.java,v <-- EjbViewController.java new revision: 1.2.2.4.2.2; previous revision: 1.2.2.4.2.1 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/CallEjbPanel.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/CallEjbPanel.java,v <-- CallEjbPanel.java new revision: 1.2.2.5.2.6; previous revision: 1.2.2.5.2.5 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/EJBListViewChildren.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/Attic/EJBListViewChildren.java,v <-- EJBListViewChildren.java new revision: 1.1.2.3; previous revision: 1.1.2.2 done Checking in j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/MessageDestinationPanelController.java; /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/MessageDestinationPanelController.java,v <-- MessageDestinationPanelController.java new revision: 1.2.2.2.2.1; previous revision: 1.2.2.2 done Checking in j2ee/ejbfreeform/src/org/netbeans/modules/j2ee/ejbfreeform/EJBFreeformModule.java; /cvs/j2ee/ejbfreeform/src/org/netbeans/modules/j2ee/ejbfreeform/EJBFreeformModule.java,v <-- EJBFreeformModule.java new revision: 1.4.2.1.2.1; previous revision: 1.4.2.1 done Checking in j2ee/ejbfreeform/src/org/netbeans/modules/j2ee/ejbfreeform/EJBProjectNature.java; /cvs/j2ee/ejbfreeform/src/org/netbeans/modules/j2ee/ejbfreeform/EJBProjectNature.java,v <-- EJBProjectNature.java new revision: 1.15.2.3.2.2; previous revision: 1.15.2.3.2.1 done Checking in j2ee/ejbfreeform/src/org/netbeans/modules/j2ee/ejbfreeform/ui/NewEJBFreeformProjectWizardIterator.java; /cvs/j2ee/ejbfreeform/src/org/netbeans/modules/j2ee/ejbfreeform/ui/NewEJBFreeformProjectWizardIterator.java,v <-- NewEJBFreeformProjectWizardIterator.java new revision: 1.8.2.1.2.1; previous revision: 1.8.2.1 done Checking in j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProvider.java; /cvs/j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarProvider.java,v <-- EjbJarProvider.java new revision: 1.23.36.6.2.4; previous revision: 1.23.36.6.2.3 done Checking in j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarWebServicesClientSupport.java; /cvs/j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarWebServicesClientSupport.java,v <-- EjbJarWebServicesClientSupport.java new revision: 1.3.2.6.2.5; previous revision: 1.3.2.6.2.4 done Checking in j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarWebServicesSupport.java; /cvs/j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarWebServicesSupport.java,v <-- EjbJarWebServicesSupport.java new revision: 1.26.2.5.2.3; previous revision: 1.26.2.5.2.2 done Checking in j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/api/EjbJarProjectGenerator.java; /cvs/j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/api/EjbJarProjectGenerator.java,v <-- EjbJarProjectGenerator.java new revision: 1.1.2.6.2.9; previous revision: 1.1.2.6.2.8 done Checking in j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java; /cvs/j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java,v <-- EjbJarProjectProperties.java new revision: 1.27.2.3.2.6; previous revision: 1.27.2.3.2.5 done Checking in j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/logicalview/LogicalViewChildren.java; /cvs/j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/logicalview/LogicalViewChildren.java,v <-- LogicalViewChildren.java new revision: 1.25.2.14.2.16; previous revision: 1.25.2.14.2.15 done Checking in j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/wizards/ImportLocationVisual.java; /cvs/j2ee/ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/wizards/ImportLocationVisual.java,v <-- ImportLocationVisual.java new revision: 1.25.36.6.2.9; previous revision: 1.25.36.6.2.8 done Checking in j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/Utility.java; /cvs/j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/Utility.java,v <-- Utility.java new revision: 1.19.2.5.2.9; previous revision: 1.19.2.5.2.8 done Checking in j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/moveclass/EjbJarMoveClassRefactoring.java; /cvs/j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/moveclass/EjbJarMoveClassRefactoring.java,v <-- EjbJarMoveClassRefactoring.java new revision: 1.8.24.3.2.3; previous revision: 1.8.24.3.2.2 done Checking in j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/rename/EjbJarRenameRefactoring.java; /cvs/j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/rename/EjbJarRenameRefactoring.java,v <-- EjbJarRenameRefactoring.java new revision: 1.24.6.4.2.3; previous revision: 1.24.6.4.2.2 done Checking in j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/whereused/EjbJarWhereUsedRefactoring.java; /cvs/j2ee/refactoring/src/org/netbeans/modules/j2ee/refactoring/whereused/EjbJarWhereUsedRefactoring.java,v <-- EjbJarWhereUsedRefactoring.java new revision: 1.7.32.2.2.2; previous revision: 1.7.32.2.2.1 done Checking in j2ee/verification/src/org/netbeans/modules/j2ee/verification/ejb/EJBApiHelper.java; /cvs/j2ee/verification/src/org/netbeans/modules/j2ee/verification/ejb/Attic/EJBApiHelper.java,v <-- EJBApiHelper.java new revision: 1.1.2.6; previous revision: 1.1.2.5 done Checking in web/project/src/org/netbeans/modules/web/project/ProjectWebModule.java; /cvs/web/project/src/org/netbeans/modules/web/project/ProjectWebModule.java,v <-- ProjectWebModule.java new revision: 1.41.20.2.2.5; previous revision: 1.41.20.2.2.4 done Checking in web/project/src/org/netbeans/modules/web/project/WebActionProvider.java; /cvs/web/project/src/org/netbeans/modules/web/project/WebActionProvider.java,v <-- WebActionProvider.java new revision: 1.73.2.3.2.2; previous revision: 1.73.2.3.2.1 done Checking in websvc/dev/src/org/netbeans/modules/websvc/dev/wizard/EJBListViewChildren.java; /cvs/websvc/dev/src/org/netbeans/modules/websvc/dev/wizard/Attic/EJBListViewChildren.java,v <-- EJBListViewChildren.java new revision: 1.1.2.2; previous revision: 1.1.2.1 done Checking in websvc/dev/src/org/netbeans/modules/websvc/dev/wizard/WebServiceWizardDescriptor.java; /cvs/websvc/dev/src/org/netbeans/modules/websvc/dev/wizard/WebServiceWizardDescriptor.java,v <-- WebServiceWizardDescriptor.java new revision: 1.13.28.4.2.2; previous revision: 1.13.28.4.2.1 done
v. buld 200608220000