myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arne Limburg <arne.limb...@openknowledge.de>
Subject AW: [Ext-CDI] @Transactional
Date Thu, 04 Mar 2010 21:09:26 GMT
Hi!

I am currently working on a JUnit-Solution for CDI (I want to have CDI-Container-Managed TestCases
running with JUnit, but this is another topic we should discuss on another thread). So I did
not so much at the EntityManager-front. I'll write a detailed Mail about my source this weekend.

For now I can say:
My solution is meant to work for extended EntityManagers that are open during an arbitrary
scope is active.

If someone of you has the time, he can upload the sources from the wiki (I have not further
worked on it yet). As I mentioned I'll write a mail about the source this weekend.

Regards,
Arne

--

Arne Limburg - Enterprise Developer
OpenKnowledge GmbH, Oldenburg
Bismarckstraße 13, 26122 Oldenburg
Mobil: +49 (0) 170 - 2733627
Tel: +49 (0) 441 - 4082-0
Fax: +49 (0) 441 - 4082-111
arne.limburg@openknowledge.de
http://www.openknowledge.de

Registergericht: Amtsgericht Oldenburg, HRB 4670
Geschäftsführer: Lars Röwekamp, Jens Schumann

-----Ursprüngliche Nachricht-----
Von: Mark Struberg [mailto:struberg@yahoo.de]
Gesendet: Donnerstag, 4. März 2010 20:47
An: MyFaces Development
Betreff: Re: [Ext-CDI] @Transactional

Hi!

Uploading the source is al always a good idea, so we can further discuss this really complicated
topic.

Is this meant to work for extended EntityManagers or for transactional JTA managed ones?

Another question: does this require the EntityManager to have a certain scope? For the extended
EM variant of course, for JTA managed we will most certainly use @Dependent, right?



LieGrue,
strub

--- Gerhard Petracek <gerhard.petracek@gmail.com> schrieb am Do, 4.3.2010:

> Von: Gerhard Petracek <gerhard.petracek@gmail.com>
> Betreff: Re: [Ext-CDI] @Transactional
> An: "MyFaces Development" <dev@myfaces.apache.org>
> Datum: Donnerstag, 4. März, 2010 20:39 Uhr
> hi arne,
> i created a jira issue for it
> [1].could you please upload your
> implementation.+ a short description about the
> possible usages as well as restrictions (if
> present).
>
>
> thx & regards,gerhard
> [1] https://issues.apache.org/jira/browse/EXTCDI-4
>
> http://www.irian.at
>
>
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>
>
>
> 2010/2/20 Arne Limburg <arne.limburg@openknowledge.de>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Hi,
>
>
>
> I’ve updated my
> code at
>
> http://wiki.apache.org/myfaces/Extensions/CDI/DevDoc/Drafts/Transactional
>
>
>
> It is not really
> tested and lacks some fallback-scenarios (i.e.
> null-handling, etc.), but it is a starting point to inject
> scoped
> EntityManagers for every CDI-scope.
>
>
>
> Regards,
>
> Arne
>
>
>
> --
>
>
>
> Arne Limburg -
> Enterprise Developer
>
> OpenKnowledge GmbH,
> Oldenburg
>
> Bismarckstraße 13,
> 26122 Oldenburg
>
> Mobil: +49 (0) 151 -
> 108 22 942
>
> Tel: +49 (0) 441 -
> 4082-0
>
> Fax: +49 (0) 441 -
> 4082-111
>
> arne.limburg@openknowledge.de
>
> http://www.openknowledge.de
>
>
>
> Registergericht:
> Amtsgericht Oldenburg, HRB 4670
>
> Geschäftsführer:
> Lars Röwekamp, Jens Schumann
>
>
>
>
>
> Von: Gerhard Petracek
> [mailto:gerhard.petracek@gmail.com]
>
>
> Gesendet: Montag, 15. Februar 2010 13:44
>
> An: MyFaces
> Development
>
> Betreff: Re: [Ext-CDI]
> @Transactional
>
>
>
>
>
> hi arne,
>
>
>
>
>
>
>
>
>
> thx for providing the source code.
>
>
>
>
>
> i'll have a look at it after the
> jsfdays.
>
>
>
>
>
>
>
>
>
>
>
> one of the goals is to provide an
> alternative conversation
> scope for cdi which allows to use the conversation concepts
> provided by
> orchestra.
>
>
>
>
>
> so we have to ensure that it works
> with every custom cdi
> scope.
>
>
>
>
>
> (cdi conversations would be the
> default scope)
>
>
>
>
>
>
>
>
>
>
>
> regards,
>
>
>
>
>
> gerhard
>
>
>
> http://www.irian.at
>
>
>
> Your JSF powerhouse -
>
> JSF Consulting, Development and
>
> Courses in English and German
>
>
>
> Professional Support for Apache MyFaces
>
>
>
>
>
>
>
> 2010/2/15 Arne Limburg <arne.limburg@openknowledge.de>
>
> Hi,
>
>
>
> I've prototyped some code that injects
> conversation-scoped EntityManagers
> reading the unitName from the qualifier annotation and
> added @Transactional
> support for this EntityManagers. This code needs some
> thinking though, e.g. how
> to handle the default-case (no unitName specified)...
>
>
>
> If you want to take a look at it, I have created a Wiki
> page and added my code
> as attachment:
>
> http://wiki.apache.org/myfaces/Extensions/CDI/DevDoc/Drafts/Transactional
>
>
>
> This code could be a starting point to implement
> Orchestra-like conversations
> (starting with CDI-Conversations)...
>
>
>
>
>
> Regards,
>
> Arne
>
>
>
> --
>
>
>
> Arne Limburg - Enterprise Developer
>
> OpenKnowledge GmbH, Oldenburg
>
> Bismarckstraße 13, 26122 Oldenburg
>
> Mobil: +49 (0) 151 - 108 22 942
>
> Tel: +49 (0) 441 - 4082-0
>
> Fax: +49 (0) 441 - 4082-111
>
> arne.limburg@openknowledge.de
>
> http://www.openknowledge.de
>
>
>
> Registergericht: Amtsgericht Oldenburg, HRB 4670
>
> Geschäftsführer: Lars Röwekamp, Jens Schumann
>
>
>
> -----Ursprüngliche Nachricht-----
>
> Von: Mark Struberg [mailto:struberg@yahoo.de]
>
>
>
> Gesendet: Samstag, 13. Februar 2010
> 20:27
>
>
>
>
>
> An: MyFaces Development
>
> Betreff: AW: [Ext-CDI] @Transactional
>
>
>
> > I am afraid supporting multiple persistence-units in
> that
>
> > scenario is very difficult...
>
>
>
> Nope, it's really easy. I simply use Qualifiers to
> distinguish between them.
>
>
>
> @Qualifier
>
> public @instance Core {}
>
>
>
> @Qualifier
>
> public @instance Other {}
>
>
>
> ----
>
> @RequestScoped
>
> public class EMProducer {
>
> private @PersistenceContext(unitName="core")
> EntityManager emCore;
>
> private @PersistenceContext(unitName="other")
> EntityManager emOther;
>
>
>
>
>
> public @Produces @Core EntityManager getCoreEM() {return
> emCore;}
>
> public @Produces @Other EntityManager getOtherEM() {return
> emOther;}
>
>
>
>
>
> Injection happens with
>
>
>
> private @Inject @Core EntityManager
>
>
>
>
>
> Got the idea?
>
>
>
> LieGrue,
>
> strub
>
>
>
> --- Arne Limburg <arne.limburg@openknowledge.de>
> schrieb am Sa, 13.2.2010:
>
>
>
> > Von: Arne Limburg <arne.limburg@openknowledge.de>
>
> > Betreff: AW: [Ext-CDI] @Transactional
>
> > An: "MyFaces Development" <dev@myfaces.apache.org>
>
> > Datum: Samstag, 13. Februar 2010, 20:06
>
> > Hi Mark,
>
> >
>
> > thank you for your feedback. I was aware of the
> requirement
>
> > of CDI-containers to inject JavaEE resources in a
>
> > JavaEE-environment, but Gerhard and I are thinking
> about a
>
> > generic non-JavaEE-solution for
> EntityManager-injection. And
>
> > at least weld does no injection of JavaEE-resources in
> this
>
> > case. How does OpenWebBeans?
>
> > I am afraid supporting multiple persistence-units in
> that
>
> > scenario is very difficult...
>
> >
>
> > Nonetheless it would be nice to see your
>
> > multiple-database-handling TransactionInterceptor in
> CODI.
>
> >
>
> > Regards,
>
> > Arne
>
> >
>
> > --
>
> >
>
> > Arne Limburg - Enterprise Developer
>
> > OpenKnowledge GmbH, Oldenburg
>
> > Bismarckstraße 13, 26122 Oldenburg
>
> > Mobil: +49 (0) 151 - 108 22 942
>
> > Tel: +49 (0) 441 - 4082-0
>
> > Fax: +49 (0) 441 - 4082-111
>
> > arne.limburg@openknowledge.de
>
> > http://www.openknowledge.de
>
>
>
> >
>
> > Registergericht: Amtsgericht Oldenburg, HRB 4670
>
> > Geschäftsführer: Lars Röwekamp, Jens Schumann
>
> >
>
> > -----Ursprüngliche Nachricht-----
>
> > Von: Mark Struberg [mailto:struberg@yahoo.de]
>
> >
>
> > Gesendet: Samstag, 13. Februar 2010 15:39
>
> > An: MyFaces Development
>
> > Betreff: AW: [Ext-CDI] @Transactional
>
> >
>
> > Hi!
>
> >
>
> > The JSR-299 spec defines that we have to support
> injection
>
> > of EE-Resources.
>
> >
>
> > This was more explicit in the old version of the spec,
> but
>
> > unless the wording got shortened, I still think
> injection of
>
> > @PersistenceUnit and @PersistenceContext must be
> supported
>
> > by any JSR-299 container (at least in an EE
> environment).
>
> >
>
> > For OpenWebBeans, you can simply use our
>
> > openwebbeans-resource plugin. Please note that this
> is
>
> > necessary because OWB is modular, and
> openwebbeans-impl (the
>
> > core) will have no EE dependencies at all (not even
> JSF,
>
> > JPA, etc!) This will get picked up automatically if it
> is
>
> > available in the classpath, e.g. you can simply define
> the
>
> > following maven dependency:
>
> >
>
> >         <dependency>
>
> >
>
> >
> <groupId>org.apache.openwebbeans</groupId>
>
> >
>
> >
> <artifactId>openwebbeans-resource</artifactId>
>
> >
>
> > <version>${owb.version}</version>
>
> >         </dependency>
>
> >
>
> > OWB supports 2 different scenarios. If you are not
> running
>
> > in a JTA aware container like e.g. OpenEJB, you will
>
> > automatically use a simple resource version of an SPI
>
> > implementation which uses
>
> > Persistence#createEntityManagerFactory(unitName) for
>
> > injecting (Thus getting an extended EM). If you use
> e.g.
>
> > OpenEJB, we are able to get the injectable resources
>
> > directly from there (thus getting a transactional
> EM).
>
> >
>
> > Once this is available, you can simply create a
> producer
>
> > method for the EntityManager:
>
> > https://svn.apache.org/repos/asf/openwebbeans/trunk/samples/reservation/src/main/java/org/apache/webbeans/reservation/util/EntityManagerUtil.java
>
>
>
>
>
> >
>
> > There is also an example on how to implement a
>
> > TransactionalInterceptor:
>
> > https://svn.apache.org/repos/asf/openwebbeans/trunk/samples/reservation/src/main/java/org/apache/webbeans/reservation/intercept/TransactionalInterceptor.java
>
>
>
>
>
> >
>
> > In my company, I already implemented a
>
> > TransactionalInteceptor which is capable of handling
>
> > multiple databases at a time and also correctly
> handles
>
> > nested transactions. I hope to migrate this over to
> CODI in
>
> > the near future.
>
> >
>
> >
>
> > LieGrue,
>
> > strub
>
> >
>
> >
>
> > --- Arne Limburg <arne.limburg@openknowledge.de>
>
> > schrieb am Sa, 13.2.2010:
>
> >
>
> > > Von: Arne Limburg <arne.limburg@openknowledge.de>
>
> > > Betreff: AW: [Ext-CDI] @Transactional
>
> > > An: "'MyFaces Development'"
> <dev@myfaces.apache.org>
>
> > > Datum: Samstag, 13. Februar 2010, 14:42
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Hi Gerhard,
>
> > >
>
> > >
>
> > >
>
> > > OK, I got what you did,
>
> > > basically I did the same. You are right,
>
> > > that was pretty straight-forward, but I had to
>
> > hard-code
>
> > > the persistence-unit
>
> > > name.
>
> > >
>
> > >
>
> > >
>
> > > I have two ideas to inject the
>
> > > persistence-unit name into the
>
> > > producer-method for the EntityManager:
>
> > >
>
> > >
>
> > >
>
> > > First idea: A
>
> > > @PersistenceUnitName qualifier-annotation to
>
> > > inject the name into the producer-method. Client
> code
>
> > would
>
> > > have somethink like
>
> > >
>
> > > public class Configuration
>
> > > {
>
> > >
>
> > >
>
> > >
>
> > >   @Produces
>
> > > @PersistenceUnitName
>
> > >
>
> > >   String
>
> > > getPersistenceUnitName() {
>
> > >
>
> > > …
>
> > >
>
> > > Not really nice, but the
>
> > > simplest solution to generify it.
>
> > >
>
> > >
>
> > >
>
> > > Second idea:
>
> > >
>
> > > The @PersistenceContext
>
> > > qualifier has a @Nonbind attribute
>
> > > persistenceUnitName which we can extract in the
>
> > producer
>
> > > method. But then we
>
> > > get in scoping issues. Especially when having
>
> > multiple
>
> > > persistence-units within
>
> > > one deployment. The second problem is: How can
> the
>
> > > @Transactional annotation
>
> > > know the persistence-unit-name.
>
> > >
>
> > >
>
> > >
>
> > > Any other ideas?
>
> > >
>
> > >
>
> > >
>
> > > Regards,
>
> > >
>
> > > Arne
>
> > >
>
> > >
>
> > >
>
> > > --
>
> > >
>
> > >
>
> > >
>
> > > Arne Limburg - Enterprise
>
> > > Developer
>
> > >
>
> > > OpenKnowledge GmbH,
>
> > > Oldenburg
>
> > >
>
> > > Bismarckstraße 13, 26122
>
> > > Oldenburg
>
> > >
>
> > > Mobil: +49 (0) 151 - 108 22
>
> > > 942
>
> > >
>
> > > Tel: +49 (0) 441 -
>
> > > 4082-0
>
> > >
>
> > > Fax: +49 (0) 441 -
>
> > > 4082-111
>
> > >
>
> > > arne.limburg@openknowledge.de
>
> > >
>
> > >
>
> > > http://www.openknowledge.de
>
>
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Registergericht: Amtsgericht
>
> > > Oldenburg, HRB 4670
>
> > >
>
> > > Geschäftsführer: Lars
>
> > > Röwekamp, Jens Schumann
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Von: Gerhard Petracek
>
> > > [mailto:gerhard.petracek@gmail.com]
>
> >
>
> > >
>
> > > Gesendet: Samstag, 13. Februar 2010 14:32
>
> > >
>
> > > An: MyFaces Development
>
> > >
>
> > > Betreff: Re: [Ext-CDI] @Transactional
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > hi arne,
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > i used the EntityManager to get
>
> > > an EntityTransaction.
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > you have to use cdi to create and
>
> > > inject it.
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > (i used some producer methods.)
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > i created @PersistenceUnit which
>
> > > is a cdi qualifier and
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > @Transactional which is a cdi
>
> > > interceptor binding.
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > basically it works and it isn't
>
> > > hard to use.
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > however, we have to think about an
>
> > > approach to provide as
>
> > > much as possible in a generic way.
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > regards,
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > gerhard
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > http://www.irian.at
>
>
>
> > >
>
> > >
>
> > >
>
> > > Your JSF powerhouse -
>
> > >
>
> > > JSF Consulting, Development and
>
> > >
>
> > > Courses in English and German
>
> > >
>
> > >
>
> > >
>
> > > Professional Support for Apache MyFaces
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > 2010/2/13 Arne Limburg <arne.limburg@openknowledge.de>
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Hi
>
> > > Gerhard,
>
> > >
>
> > >
>
> > >
>
> > > Did
>
> > > you mean „i used
>
> > > UserTransaction”? If not, how do you receive
> your
>
> > > EntityTransaction?
>
> > >
>
> > >
>
> > >
>
> > > I am
>
> > > working on a solution to
>
> > > get request-scoped EntityManagers injected within
> a
>
> > > servlet-container that does
>
> > > not even support the web-profile (which are the
>
> > current
>
> > > jetty and the current
>
> > > tomcat). I am not able to get an EntityManager
>
> > injected via
>
> > > @PersistenceContext
>
> > > in that environment. So it would be nice if there
> were
>
> > some
>
> > > CDI-Extension to
>
> > > achieve this. The implementation would be pretty
>
> > > straight-forward except the
>
> > > configuration of the persistence-unit name and
> the
>
> > handling
>
> > > of different
>
> > > persistence-units within one CDI-deployment
>
> > > unit.
>
> > >
>
> > >
>
> > >
>
> > > Using
>
> > > JTA-Transactions vs.
>
> > > resource-local EntityTransactions is another
> issue
>
> > > here.
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Regards,
>
> > >
>
> > > Arne
>
> > >
>
> > >
>
> > >
>
> > > --
>
> > >
>
> > >
>
> > >
>
> > > Arne
>
> > > Limburg - Enterprise
>
> > > Developer
>
> > >
>
> > > OpenKnowledge GmbH,
>
> > > Oldenburg
>
> > >
>
> > > Bismarckstraße
>
> > > 13, 26122 Oldenburg
>
> > >
>
> > > Mobil: +49 (0) 151
>
> > > - 108 22 942
>
> > >
>
> > > Tel: +49 (0) 441 -
>
> > > 4082-0
>
> > >
>
> > > Fax: +49 (0) 441 -
>
> > > 4082-111
>
> > >
>
> > > arne.limburg@openknowledge.de
>
> > >
>
> > >
>
> > > http://www.openknowledge.de
>
> > >
>
> > >
>
> > >
>
> > > Registergericht:
>
> > > Amtsgericht Oldenburg,
>
> > > HRB 4670
>
> > >
>
> > > Geschäftsführer:
>
> > > Lars Röwekamp, Jens
>
> > > Schumann
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Von: Gerhard
>
> > > Petracek [mailto:gerhard.petracek@gmail.com]
>
> > >
>
> > >
>
> > > Gesendet: Freitag, 12. Februar 2010 19:59
>
> > >
>
> > > An: MyFaces Development
>
> > >
>
> > > Betreff: Re: [Ext-CDI] @Transactional
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > hi
>
> > > arne,
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > yes
>
> > > - i used EntityTransaction in the prototype and
> it
>
> > works
>
> > > pretty well in a
>
> > > servlet container (that was the base idea).
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > regards,
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > gerhard
>
> > >
>
> > >
>
> > >
>
> > > http://www.irian.at
>
>
>
> > >
>
> > >
>
> > >
>
> > > Your JSF powerhouse -
>
> > >
>
> > > JSF Consulting, Development and
>
> > >
>
> > > Courses in English and German
>
> > >
>
> > >
>
> > >
>
> > > Professional Support for Apache MyFaces
>
> > >
>
> > >
>
> > >
>
> > > 2010/2/12
>
> > > Arne Limburg <arne.limburg@openknowledge.de>
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Hi
>
> > > folks,
>
> > >
>
> > >
>
> > >
>
> > > I saw the discussion of adding an
>
> > > @Transactional-Annotation to your
>
> > > CDI extensions. I think Gerhard wrote it. I
> wonder if
>
> > it
>
> > > deals with JTA
>
> > > transactions (which indeed would be pretty
>
> > > straight-forward) or with
>
> > > EntityTransactions of an resource-local
> EntityManager.
>
> > I am
>
> > > working on the
>
> > > latter one and just would want to know if someone
> else
>
> > is
>
> > > working on such
>
> > > stuff. I think it would be great, when we could
>
> > archive
>
> > > injection of
>
> > > resource-local EntityManagers with
> transaction-support
>
> > to
>
> > > deploy it on a tomcat
>
> > > or jetty. What do you think?
>
> > >
>
> > >
>
> > >
>
> > > Regards,
>
> > >
>
> > > Arne
>
> > >
>
> > >
>
> > >
>
> > > --
>
> > >
>
> > >
>
> > >
>
> > > Arne Limburg - Enterprise
>
> > > Developer
>
> > >
>
> > > OpenKnowledge GmbH, Oldenburg
>
> > >
>
> > > Bismarckstraße
>
> > > 13, 26122 Oldenburg
>
> > >
>
> > > Mobil:
>
> > > +49 (0) 151 - 108 22 942
>
> > >
>
> > > Tel:
>
> > > +49 (0) 441 - 4082-0
>
> > >
>
> > > Fax:
>
> > > +49 (0) 441 - 4082-111
>
> > >
>
> > > arne.limburg@openknowledge.de
>
> > >
>
> > >
>
> > > http://www.openknowledge.de
>
>
>
> > >
>
> > >
>
> > >
>
> > >
>
> > > Registergericht:
>
> > > Amtsgericht Oldenburg, HRB 4670
>
> > >
>
> > > Geschäftsführer:
>
> > > Lars Röwekamp, Jens Schumann
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> > >
>
> >
>
> >
>
> > __________________________________________________
>
> > Do You Yahoo!?
>
> > Sie sind Spam leid? Yahoo! Mail verfügt über einen
>
> > herausragenden Schutz gegen Massenmails.
>
> > http://mail.yahoo.com
>
> >
>
>
>
> __________________________________________________
>
> Do You Yahoo!?
>
> Sie sind Spam leid? Yahoo! Mail verfügt über einen
> herausragenden Schutz gegen
> Massenmails.
>
> http://mail.yahoo.com
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

__________________________________________________
Do You Yahoo!?
Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen Massenmails.
http://mail.yahoo.com
Mime
View raw message