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.

Bug 74924 - Is not possible deploy web module without deployment descriptor
Summary: Is not possible deploy web module without deployment descriptor
Status: VERIFIED FIXED
Alias: None
Product: javaee
Classification: Unclassified
Component: DD Editor (show other bugs)
Version: 5.x
Hardware: All All
: P2 blocker (vote)
Assignee: Marek Fukala
URL:
Keywords:
Depends on:
Blocks: 80015 75760
  Show dependency tree
 
Reported: 2006-04-12 13:33 UTC by Petr Pisl
Modified: 2006-08-22 13:47 UTC (History)
3 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
The exceptions (7.79 KB, text/plain)
2006-04-12 13:34 UTC, Petr Pisl
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Petr Pisl 2006-04-12 13:33:49 UTC
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).
Comment 1 Petr Pisl 2006-04-12 13:34:31 UTC
Created attachment 29801 [details]
The exceptions
Comment 2 _ ludo 2006-05-23 18:12:58 UTC
Can we evaluate this bug now?
Comment 3 _ pcw 2006-05-24 01:07:07 UTC
I reproduced this just now.  I will fix it.
Comment 4 _ pcw 2006-05-24 03:07:20 UTC
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.
Comment 5 _ pcw 2006-05-24 08:46:02 UTC
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.
Comment 6 _ pcw 2006-05-24 08:49:02 UTC
Moved to web/dd editor actually.  Couldn't find j2ee/ddapi for some reason,
maybe I'm just tired, fix if wrongly assigned please.
Comment 7 Petr Jiricka 2006-05-24 09:31:51 UTC
Pavle, what should be the correct behavior?
Comment 8 _ pcw 2006-05-24 16:52:25 UTC
I double checked appclient and ear projects -- they also work as expected with
no standard descriptor so this bug is with web projects only.
Comment 9 Petr Pisl 2006-05-24 18:17:58 UTC
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?
Comment 10 Petr Pisl 2006-05-24 18:19:26 UTC
I forgot mentioned that this works for Tomcat. 
Comment 11 _ pcw 2006-05-24 23:40:45 UTC
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.
Comment 12 _ pcw 2006-05-25 00:59:19 UTC
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.
Comment 13 Erno Mononen 2006-05-25 09:13:08 UTC
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. 
Comment 14 _ pcw 2006-05-25 20:09:00 UTC
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.
Comment 15 Pavel Buzek 2006-05-30 18:07:37 UTC
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.
Comment 16 Marek Fukala 2006-06-01 14:50:27 UTC
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().
Comment 17 Marek Fukala 2006-06-28 16:57:18 UTC
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
Comment 18 Dan Kolar 2006-08-22 13:47:21 UTC
v. buld 200608220000