Avatar billede kernelx Juniormester
09. december 2010 - 19:13 Der er 4 kommentarer og
1 løsning

Java EE 6 scope eller stereotype, hvem har magten?

Hi,

hvis jeg har forstået det rigtigt, så kan jeg definere stereotype annotations, som selv indeholder scope og qualifier annotations, som så bliver mapped til en class, som er annoteret med denne stereotype.

hvis jeg har følgende class:

@SessionScoped
@TestStereoTypeAs
@TestStereoTypeRs
public class Test {
  // ...
}

Hvis nu TestStereoTypeAs er defineret sådan, at den class som bruger indeholder en @ApplicationScoped annotation

og TestStereoTypeRs er defineret sådan, at den indeholder en
@RequestScoped annotation,

hvilken Scope har denne class så?

Nu er det måske bad code, hvis man annoterer sådan. Men hvem har magten i dette tilfælde? SessionScope eller en scope, som er defineret i en stereotype?

Mange tak i forvejen
Avatar billede arne_v Ekspert
28. december 2010 - 01:16 #1
Hvis ikke der står noget i CDI spec, så må det være implementations specifikt d.v.s. at kode bør ikke antage noget om det.

Og jeg finder det faktisk ret sandsynligt, at det ikke er specificeret.

Ved du at IBM stemte imod CDI i JCP?

Deres begrundelse er interessant:

The current lack of portability between JSR 330 and JSR 299 applications will create significant difficulties for the community. Application developers who use patterns based on JSR 330 injection annotations and proprietary injection mechanisms will experience integration issues when taking advantage of JSR 299 contexts associated with JSF. Insufficient attention has been paid to these details in the development of these specifications and this will reflect poorly on the Java EE platform as a whole. Although IBM previously voted in support  of both JSR 299 and 330 with the clear expectation that the "SE/EE injection programming model must be aligned into a single extensible programming model that defines a core set of functionality for SE and extends that with EE functionality", this has not yet been achieved. IBM will continue to support both expert groups in the development of a single integrated and extensible injection programming model.
Avatar billede kernelx Juniormester
29. december 2010 - 12:12 #2
Hvis jeg har forstået JSR-299 Final Release, side 18, afsnit 2.7.1.1 rigtigt,
så definerer en stereotype default-values.

følgende bean er SessionScoped, fordi @SessionScoped er explicit defineret for denne bean og overskriver en scope, defineret i en stereotype
====================================================
@SessionScoped
@TestStereoTypeThatDefinesAnApplicationScope
@TestStereoTypeThatDefinesAnFooBarScope
public class Test {
  // ...
}
====================================================

Følgende code burde kaste en Exception fordi der opstår en konflikt
====================================================
@SessionScoped
@ApplicationScoped
public class Test {
  // ...
}
====================================================
Avatar billede kernelx Juniormester
29. december 2010 - 12:12 #3
husk at skrive et eller andet som svar
Avatar billede arne_v Ekspert
29. december 2010 - 23:50 #4
Den tekst lyder som om at det er den tilsigtede funktionalitet.

Og at det hvis det ikke virker sådan er en fejl i implementationen.

Jeg tror dog at jeg ville forsøge at undgå problemet. Nogen gange bør man undgå at gå helt til grænsen i specs.
Avatar billede arne_v Ekspert
29. december 2010 - 23:51 #5
Og et svar hvis du synes at jeg har bidraget med noget.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester