SpringSource Application Platform Deployment Options

Sam Brannen

Since we released the SpringSource Application Platform last Wednesday, numerous developers have downloaded the 1.0.0 beta and started taking the Platform for a test drive. As a result, people have begun asking, "How can I deploy my apps on the Platform, and what kind of deployment and packaging options do I have?" Moreover, developers are eagerly requesting to see working samples. In response, the S2AP team will be releasing several sample applications over the coming weeks demonstrating these features and more, but before you get your hands on these samples, I'd like to give you a high-level overview of the deployment and packaging options available in the Platform. After reading this post you'll be ready to hit the ground running with the samples as well as with your own applications.

Overview

As Rob mentioned in his post last week, Introducing the SpringSource Application Platform, the Platform supports applications packaged in the following forms:

  1. Raw OSGi Bundles
  2. Java EE WAR
  3. Web Modules
  4. Platform Archive (PAR)

When you deploy an application to the Platform, each deployment artifact (e.g., a single bundle, WAR, or PAR) passes through a deployment pipeline. This deployment pipeline supports the notion of personality-specific deployers which are responsible for processing an application with a certain personality (i.e., application type). The 1.0.0 release of the Platform natively supports personality-specific deployers analogous to each of the aforementioned packaging options. Furthermore, the deployment pipeline can be extended with additional personality deployers, and future releases of the Platform will provide support for personalities such as Batch, Web Services, etc.

Let's take a closer look now at each of the supported deployment and packaging options to explore which one is best suited for your applications.

Raw OSGi Bundles

At its core, the SpringSource Application Platform is an OSGi container. Thus any OSGi-compliant bundle can be deployed directly on the Platform unmodified. You'll typically deploy an application as a single bundle or a set of stand-alone bundles if you'd like to publish or consume services globally within the container via the OSGi Service Registry. Please note, however, that due to the scoping nature of the PAR format, stand-alone bundles will not be able to consume services across application boundaries. In other words, a stand-alone bundle can not reference the services of modules deployed within a PAR.

WAR Deployment Options

For Web Application Archives (WAR), the SpringSource Application Platform provides support for the following three formats.

  1. Standard Java EE WAR
  2. Shared Libraries WAR
  3. Shared Services WAR

Each of these formats plays a distinct role in the incremental migration path from a standard Java EE WAR to an OSGi-ified web application.

Standard WAR

As Rob has already pointed out, "Standard WAR files are supported directly in the Platform. At deployment time, the WAR file is transformed into an OSGi bundle and installed into Tomcat. All the standard WAR contracts are honoured, and your existing WAR files should just drop in and deploy without change." Support for standard, unmodified WAR files allows you to try out the SpringSource Application Platform on your existing web applications and then gradually migrate toward the Shared Libraries WAR, Shared Services WAR, and Web Module formats.

Shared Libraries WAR

If you have experience with developing and packaging web applications using the standard WAR format, you're certainly familiar with the pains of library bloat. So, unless you're installing shared libraries in a common library folder for your Servlet container, you have to pack all JARs required by your web application in /WEB-INF/lib. Prior to the release of the Platform, such library bloat has essentially been the norm for web applications, but now there is a better solution! The Shared Libraries WAR format reduces your application's deployment footprint and eradicates library bloat by allowing you to declare dependencies on libraries via standard OSGi manifest headers such as Import-Package and Require-Bundle. The Platform provides additional support for simplifying dependency management via the Import-Library and Import-Bundle manifest headers which are essentially macros that get expanded into OSGi-compliant Import-Package statements.

For detailed information on what kind of libraries you already have at your disposal, check out the SpringSource Enterprise Bundle Repository. In addition, Andy Wilkinson will be posting a blog later this week explaining how to make the most of the Bundle Repository within your applications and the SpringSource Application Platform. So stay tuned.

Shared Services WAR

Once you've begun taking advantage of declarative dependency management with a Shared Libraries WAR, you'll likely find yourself wanting to take the next step toward reaping further benefits of an OSGi container: sharing services between your OSGi-compliant bundles and your web applications. By building on the power and simplicity of Spring-DM, the Shared Services WAR format puts the OSGi Service Registry at your fingertips. As a best practice you'll typically publish services from your domain, service, and infrastructure bundles via <osgi:service … /> and then consume them in your web application's ApplicationContext via <osgi:reference … />. Doing so promotes programming to interfaces and allows you to completely decouple your web-specific deployment artifacts from your domain model, service layer, etc., and that's certainly a step in the right direction. Of the three supported WAR deployment formats, the Shared Services WAR is by far the most attractive in terms of modularity and reduced overall footprint of your web applications.

Web Modules

Above and beyond WAR-based deployment formats, the SpringSource Application Platform introduces a deployment and packaging option for OSGi-compliant web applications, the Web Module format. Web modules have a structure similar to a Shared Services WAR and can therefore take full advantage of all three WAR deployment formats. In addition, web modules benefit from reduced configuration for Spring MVC based applications via new OSGi manifest headers such as Web-DispatcherServletUrlPatterns and Web-FilterMappings. For further details on these and other Web-* manifest headers, please consult the Platform's Programmer Guide. Upcoming releases of the Platform will also support web.xml fragments as well as the aforementioned manifest headers.

If you're building a Spring MVC based web application as a web module, you won't need to worry about configuring a root WebApplicationContext or an ApplicationContext for your DispatcherServlet. Based on metadata in your web module's /META-INF/MANIFEST.MF, the Platform will auto-generate an appropriately configured web.xml for you on-the-fly, and your application will use the ApplicationContext created for your web module by Spring-DM. Future releases will add additional support to simplify configuration of Spring Web Flow based web applications as well.

Migration path from WAR to Web Module

The following diagram graphically depicts the migration path from a Standard WAR to a Web Module. As you can see, the libs move from within the deployment artifact to the Bundle Repository. Similarly, the services move from within the WAR to external bundles and are accessed via the OSGi Service Registry. In addition, the overall footprint of the deployment artifact decreases as you move towards a Web Module.

Migration path from WAR to Web Module

Platform Archives

The final piece of the puzzle is the PAR (Platform Archive) deployment format. A PAR is a standard JAR which contains all of the modules of your application (e.g., service, domain, and infrastructure bundles as well as a WAR or web module for web applications) in a single deployment unit. This allows you to deploy, refresh, and undeploy your entire application as a single entity. For those of you familiar with Java EE, a PAR can be considered a replacement for an EAR (Enterprise Archive) within the context of an OSGi container. As an added bonus, modules within a PAR can be refreshed independently and on-the-fly, for example via the SpringSource Application Platform Tool Suite (register for the beta program and check out the Eclipse tooling support).

Furthermore, PARs scope the modules of your application within the Platform. Scoping provides both a physical and logical application boundary, shielding the internals of your application from any other applications deployed within the Platform. This means your application doesn't have to worry about clashing with other running applications (e.g., in the OSGi Service Registry). You get support for load-time weaving, classpath scanning, context class loading, etc., and the Platform does the heavy lifting for you to make all this work seamlessly in an OSGi environment. If you want to take full advantage of all that the SpringSource Application Platform and OSGi have to offer, packaging and deploying your applications as a PAR is definitely the recommend choice.

Where to go from here

If you haven't already done so, I encourage you to join the beta program and take the SpringSource Application Platform for a test drive yourself.

You'll find up-to-date documentation in the user guide and programmer guide, and if you happen to run into any issues deploying your applications or have recommendations on how we can improve the Platform, please don't hesitate to create a JIRA issue.

And last but not least, be sure to check out upcoming posts on the SpringSource Team Blog to keep abreast of news regarding the Platform and to see working examples including an OSGi-ified Spring PetClinic sample application which has been modularized and packaged as a PAR.

 

10 responses


  1. Hello Sam,

    does that mean that I cannot actually export services to the OSGi service registry from within a PAR-packaged application? Or more precisely, how does "shielding the internals of your application from any other applications deployed within the Platform" limit a PARs ability to interact (via OSGi) with other modules deployed into the same Platform instance?

    Thank you,

    Nils


  2. Hi Nils,

    That's a good question.

    On May 7, 2008 at 1:19 am, Nils Wloka said:

    does that mean that I cannot actually export services to the OSGi service registry from within a PAR-packaged application?

    No, you can still export services to the OSGi Service Registry from modules within your PAR.

    On May 7, 2008 at 1:19 am, Nils Wloka said:

    Or more precisely, how does "shielding the internals of your application from any other applications deployed within the Platform" limit a PARs ability to interact (via OSGi) with other modules deployed into the same Platform instance?

    The shielding of internals I mentioned does not limit the ability of modules within a PAR to interact with services published in the OSGi Service Registry. I think a more detailed explanation of scoping may help to shed some light on the subject.

    Scoping of modules within a PAR applies to both the types imported and exported by the modules as well as the services they publish and consume via the OSGi Service Registry. Specifically, scoping of services is implemented by auto-generated service properties and matching filters. These effectively only apply to services which are both published and consumed within the PAR. Thus, if you consume a service which is not published within your PAR, the service look-up will not get filtered, and you will get a reference to a service outside your PAR. If you publish a service which is not consumed within your PAR, the service will still be augmented with scoped service properties, but as long as the consumer does not apply a conflicting filter, the consumer will still see the service.

    Regards,

    Sam


  3. Hello again,

    thanks a lot for the clarification. That sounds really neat. Is it possible to publish a service from inside a PAR for both internal and external consumption (i.e. can I override the default filtering)?

    So many questions :)

    Later,

    Nils


  4. On May 7, 2008 at 3:16 pm, Nils Wloka said:

    thanks a lot for the clarification.

    You're welcome.

    On May 7, 2008 at 3:16 pm, Nils Wloka said:

    Is it possible to publish a service from inside a PAR for both internal and external consumption?

    Yes, you can publish a service from inside a PAR and reference it internally. This will happen automatically within a PAR, since both the publishing and consumption of services (i.e., via Spring-DM's <osgi:service … /> and <osgi:reference … />, respectively) are scoped. You can also reference the published service externally from outside the PAR, but remember that you'll need to avoid creating a conflicting filter when looking up the service in the OSGi Service Registry.

    On May 7, 2008 at 3:16 pm, Nils Wloka said:

    can I override the default filtering?

    No, there is currently no way to override the default filtering or service properties applied during scoping.

    However, we are looking into ways to improve this.

    On May 7, 2008 at 3:16 pm, Nils Wloka said:

    So many questions :)

    Keep 'em coming! ;)

    - Sam


  5. Sam,

    great series of blog entries about S2AP. Keep 'em coming!

    Now that you guys have released PAR version of Petclinic, I would be very interested seeing other deployment versions of it e.g. Shared Libs WAR, Shared Services WAR, Web Module. What are the chances of having these versions of Petclinic available?

    Also I would love to see you guys releasing the Ivy-Ant build system with some docs!

    Thanks,
    Dmitriy.


  6. Another question: is it really a good idea of having services published by modules within PARs (intended by "internal" consumption) be visible from outside PARs (via OSGi registry). Is there any way to prevent that?

    Thanks,
    Dmitriy.


  7. Hi Dmitriy,

    On May 8, 2008 at 9:08 am, Dmitriy Kopylenko said:

    Now that you guys have released PAR version of Petclinic, I would be very interested seeing other deployment versions of it e.g. Shared Libs WAR,
    Shared Services WAR, Web Module.

    FYI: the PetClinic sample application that we recently released already demonstrates a PAR with several bundles (i.e., domain, infrastructure, and repository) as well as a web module.

    On May 8, 2008 at 9:08 am, Dmitriy Kopylenko said:

    What are the chances of having these versions of Petclinic available?

    Due to the complexity of the PetClinic sample application, we are currently only planning on providing the "PAR with a Web Module" deployment version of PetClinic; however, I have some good news for you…

    Colin Yates and I have been working on a migration guide that will walk you through the steps of migrating the Spring 2.0 Form Tags show case application from a Standard Java EE WAR to a Shared Libraries WAR, a Shared Services WAR, and finally a full blown PAR with a Web Module. We'll be providing working examples that you can download, and Colin is
    adding further documentation in a new case study chapter of the Programmer Guide.

    So, with those samples and the documentation in your hands, we're confident that you'll be able to morph the PetClinic sample application into the various deployment formats on your own!

    Regards,

    Sam


  8. On May 8, 2008 at 9:19 am, Dmitriy Kopylenko said:

    Another question: is it really a good idea of having services published by modules within PARs (intended by "internal" consumption) be visible from outside PARs (via OSGi registry). Is there any way to prevent that?

    Those are certainly valid questions, and you're right: ideally you would want to be able to explicitly restrict the visibility of services published and consumed within a PAR so that external bundles could not see those services. There is currently, however, no way to restrict the visibility of services on the Platform other than what scoping provides you.

    Security and visibility of services as well as types are topics that we will be addressing in the Platform over the coming months. So stay tuned and feel free to make suggestions on JIRA.

    Thanks,

    Sam


  9. On May 8, 2008 at 12:25 pm, Sam Brannen said:

    Colin Yates and I have been working on a migration guide that will walk you through the steps of migrating the Spring 2.0 Form Tags show case application from a Standard Java EE WAR to a Shared Libraries WAR, a Shared Services WAR, and finally a full blown PAR with a Web Module. We'll be providing working examples that you can download, and Colin is
    adding further documentation in a new case study chapter of the Programmer Guide.

    So, with those samples and the documentation in your hands, we're confident that you'll be able to morph the PetClinic sample application into the various deployment formats on your own!

    Regards,

    Sam

    That's good news. Thanks Sam.

    Dmitriy.


  10. On May 8, 2008 at 12:36 pm, Sam Brannen said:

    Security and visibility of services as well as types are topics that we will be addressing in the Platform over the coming months. So stay tuned and feel free to make suggestions on JIRA.

    Thanks,

    Sam

    Sounds good to me.

    Dmitriy.

3 trackbacks

Leave a Reply

Quote selected text

buy viagra
generic viagra
buy viagra online
cheap viagra
free viagra
viagra prescription
viagra online stores
viagra online
viagra side effects
viagra for women
order viagra
herbal viagra
viagra for sale
discount viagra
viagra sale
viagra uk
natural viagra
viagra without prescription
buy cheap viagra
female viagra
cheapest viagra prices
buy generic viagra
cheap generic viagra
free viagra sample
viagra canada
try viagra for free
viagra pills
side effects of viagra
order viagra online
viagra 6 free samples
viagra alternative
viagra on line
cialis vs viagra
purchase viagra online
can viagra causes legs to ache
what is generic viagra
buying viagra online
buy viagra meds online
viagra no prescription
buy viagra online 35008
viagra soft tabs
viagra dosage
low cost viagra
buy viagra cheap
viagra uterine thickness
viagra alternatives
viagra vs cialis
viagra samples
online viagra
viagra over the counter
viagra from india
viagra lawyers
buy viagra now
viagra stories
buy viagra on line
viagra attorneys
viagra mexico
viagra free trial
canadian viagra
viagra prices
buy viagra australia
viagra covered by insurance
viagra substitute
splitting viagra
viagra patent
free sample prescription for viagra
viagra oral jelly
viagra reviews
viagra jokes
womens viagra
viagra pharmacy
viagra 100mg
cialis levia and viagra
legal viagra
fda on viagra
over the counter viagra
viagra pill
viagra generic
generic name of viagra
viagra overnight
buying viagra
cheap herbal viagra
cheapest viagra
viagra blood pressure
viagra cheap
viagra sample
viagra overdose
prescription for viagra
effects of viagra on women
generic viagra india
pfizer viagra
mail order viagra
viagra buy
viagra and cialis
u 3312 viagra cialis
cialis viagra
what does viagra do to females
ladies viagra
buy online viagra
buy viagra per pill
free sites computer search viagra find
on viagra
viagra women
online viagra store
cuddle chemical viagra boosts performance
viagra patent pfizer
viagra boosts chemical cuddle performance
viagra facts
viagra from usa
bad side effects of viagra
buy viagra order viagra
free viagra samples
viagra online cheap
viagra fuerteventura market
free sample viagra
no prescription viagra
best price for generic viagra
viagra and alcohol
viagra free pills
what is viagra
viagra price
viagra cialis
order 50mg viagra
viagra side affects
viagra potenzmittel
impotence viagra
can women take viagra
viagra cialis levitra
buy cheap viagra online uk
viagra experiences
viagra results
viagra low cost
order cheap viagra fas
viagra versus cialis
non prescription viagra
free trial of viagra
purchase viagra
viagra effekter biverkningar
herbal viagra australia
viagra generic brand
buy viagra ups
low cost viagra online
viagra 50 mg
viagra testosterone
recreational viagra use
viagra viagra
viagra times
where to buy viagra
buy viagra onli
generic viagra mexico
viagra commercial
viagra boosts chemical cuddle
viagra attorney ohio
gernic viagra
buy viagra pill
uk viagra sales
viagra online uk
mexico pharmacy generic viagra
herbal v viagra study
viagra and discovery
drinking and viagra
songs about viagra
viagra natural
viagra effects on women
viagra fuerteventura
generic viagra overnight
viagra forum
viagra sverige
death by viagra
cheapest viagra in uk
mexican viagra
viagra sales
uprima cialis viagra
viagra faq
discounted viagra
buy viagra online australia
generic viagra pill
buy viagra uk
side effects from viagra
viagra no prior prescription
viagra cartoon
viagra lawyer columbus
viagra blindness
buy viagra online inu
viagra effects
viagra as ergogenic aid
find viagra free computer sites
cost of viagra
viagra info
best natural viagra
women viagra
guaranteed cheapest viagra
viagra sex
get viagra
viagra lawyer ohio
viagra attorney columbus
viagra jelly
buy viagra online 35008 buy
viagra free sites computer find
free samples of viagra
cialis super viagra
canada viagra
buy viagra australian
2007 viagra hmo
effects of viagra
is there a female viagra
viagra substitutes
dangers of viagra
cheap viagra online
viagra or cealis
natural alternative to viagra
bought viagra fuerteventura
pharmacy viagra
videos viagra
find sites computer shop viagra free
acheter du viagra
cialis v s viagra
viagra sales uk
buy sublingual viagra online
viagra free sample
fake viagra
viagra for woman
does viagra work
order discount viagra
viagra st
viagra for cheap
cialis new viagra
best herbal viagra
what does viagra do
viagra next day delivery
buy viagra without prescription
viagra use
viagra litigation
free viagra online
india viagra
buy australian viagra
free viagra samples before buying
discount viagra pills
t 84 viagra
viagra warning
viagra instructions
viagra from canada
viagra free sites computer find search
viagra find sites computer search
sublingual viagra
impotence and viagra
viagra max complaints
vicodin viagra
viagra beneficial side effects
viagra and nitrous oxide
viagra testimonials
apcalis levitra viagra
viagra for men
find viagra free sites computer
cialis versus viagra
discount viagra online
free viagra without prescription
generic viagra overnight delivery
viagra cialis generica
find viagra free sites edinburgh
find viagra free sites
viagra tolerance
generic viagra online
viagra discounts
viagra online no rx comparison
getting viagra in the philippines
money order viagra
viagra australia
viagra find free computer sites pages
viagra price strategy
viagra discount
can viagra cause restless leg syndrome
women and viagra
find sites computer shop viagra search
buy viagra in canada
rate generic viagra
free viagra canadian pharmacy
viagra retail discount
viagra online overnight delivery
soft viagra
viagra online no rx
dog ate viagra tablet any danger
generic viagra cheap
compare viagra
viagra suppositories ivf
viagra vs levitra
qry viagra
buy viagra in uk
discount generic viagra
viagra dosing
viagra illegal phillipines
viagra bon marche
viagra free samples
viagra 50mg
generisch viagra
buy discount viagra online
detumescence priapism viagra
q viagra meta
harm of expired viagra
viagra news edinburgh comment moo
viagra ad
viagra experience
viagra sideffects
viagra type drugs
viagra works
viagra online shop in uk
viagra paypal
viagra pay with paypal
buying viagra online uk
rapid tabs viagra
is viagra from india safe
cheapest price for viagra
online ed drugs viagra samples package
viagra shelf life
get viagra drug online
diabetes and viagra
viagra overnight delivery
viagra song
viagra sex domination
female viagra cream
viagra purchase online
what is better viagra or levitra
non presciption viagra replacements
adverse side effects of viagra
viagra logo
discount priced viagra
cheap viagra nz
womens viagra
women does viagra work
viagra ingredients
does viagra really work
viagra uk 32
is viagra safe for women
indian viagra
viagra free sites computer find online
mixing vicodin viagra
cialis or viagra
zenerx natural viagra
viagra effect women
edinburgh uk news viagra site search
canadian generic viagra
prescription free viagra
viagra buy online
viagra herbal substitute
pleasure viagra
where to buy viagra on line
viagra dosage recomendation
buy viagra by pill
free sample of viagra
women taking viagra
viagra purchase
where can i get free viagra
arlene farmer viagra
q viagra search
oyster viagra
ge n eric viagra
viagra federal express
viagra sildenafil citrate information
viagra ads funny
viagra levitra cialis pharmacist perscription drugs
counterfeit viagra
search viagra free sites find computer
mode demploi viagra
discount viagra in the usa
viagra pics
lialda viagra
wild horses viva viagra
viagra equivalent
viagra directions
viagra joke
natural viagra substitutes
viagra generico impotencia
garlic better than viagra
query viagra
effects of viagra mixed with cocaine
buy cheap viagra online
viagra does not work
viagra from canada legitimate
ending viagra use
counterfeit viagra abu dhabi
where to buy viagra online
viagra manufacturer
viagra side effects dangers
viagra users discussion
generic price viagra
buy taladafil viagra
viagra cialis delivery
viagra recreational
buy viagra in bangkok
generic viagra soft tab fast
viagra online no prescription
viagra covered california hmo
viagra forums
viagra 50mg sverige
viagra boosts post cuddle chemical
teenney transplant and viagra
lowest prices viagra
viagra picture funny
viagra for pulmonary hypertension
colleagues viagra
search viagra pages computer find
viagra boots
what to know about viagra jelly
cheap viagra overnight
song viagra in the water
viagra for doggies
viagra free sites computer edinburgh find
q viagra kgs 0 kls 0
viagra cheap no prescription
find search viagra edinburgh free
find viagra free sites edinburgh computer
viagra next day shipment
viagra free trials
free sample viagra vs cialis
online viagra prescriptions
dosage viagra
pn 1 viagra
mail order viagra in uk
viagra information
viagra mail order uk
viagra tutorial
viagra sildenafil citrate
compare cialis and viagra
woman taking viagra
viagra supplement
compare cialis viagra levitra
best price for viagra
niacin works like viagra
from generic india viagra
viagra ads
phentermine viagra
cheapest generic viagra
free samples viagra
newsletter viagra
ordering viagra
cheap generic viagra no script
viagra generique
health net viagra non-formulary cost
viagra on line uk
cialis and viagra together
order pfizer viagra with mastercard
atenolol viagra
buy viagra online without prescription
womans viagra
compare cilalis and viagra
herbal viagra uk
viagra gel
free herbal viagra samples
disp no 19105 viagra
viagra and women
viagra on-line
viagra coverage california
viagra news edinburgh comment search
viagra etc
otc viagra
cialis viagra combo
viagra use of
viagra product strategy
affects of viagra
viagra eyes
viagra and cocaine
viagra best prices
generic viagra canada
viagra cost
mail order for viagra tablets
viagra mail order
viagra edinburgh find search free
generic sample viagra
find viagra free sites search
viagra comparison prices online
viagra jet lag
negative side affects of viagra
habituate viagra
viagra cartoons
semen turns yellow viagra
find viagra free sites computer edinburgh
viagra free sites find computer
cialis viagra sampler
c-ring viagra
next dat delivery generic viagra
gay viagra stories
viagra pay by e-check
viagra price comparison
take cialis and viagra together
overnight viagra
free sample pack of viagra
q viagra
viagra penis size
viagra free sites computer edinburgh
herbal viagra replacements
viagra ejaculation
multiple acts viagra
free viagra sample viagra sample
salis vs viagra
find viagra free sites edinburgh search
q viagra btng search meta
viagra without a prescription
health net viagra
mexico viagra
can i take viagra
edinburgh uk viagra news comment moo
viagra oral sex
viagra usage
viagra wholesale
viagra urethral
find search edinburgh viagra phentermine
buy cheap viagra online u
viagra pictures
tia viagra
viagra in mexico
viagra not working
viagra rss feed
viagra generico
does viagra lower blood pressure
online phamacy viagra
articles of counterfeit viagra
viagra canada satisfaction guarantee
edinburgh search pages viagra report
phillip stricker viagra trial
cialis canada online pharmacy viagra
viagra 50 mg or 100mg
viagra and marijuana
viagra tiajuana
longer sex with viagra
viagra levitra compared
viagra dose
best buy viagra
counterfeit viagra identify four package
viagra pills cod
viagra sales mexico
info on viagra
viagra danger dogs
viagra commercial girl
viagra discussion
ed viagra
womans viagra
which is better lavitra or viagra
side effects of teenren using viagra
india generic viagra on line sales
color of viagra
order viagra online no rx prescription
free sites computer viagra find
taking viagra and adderall together
expired viagra
no prescription cheap viagra
find viagra free sites computer search
viagra and altace
pt 141 viagra
buy viagra in mexico
recreational viagra
ref hth q viagra
viagra discount online
peruvian viagra
viagra wikipedia
generic form of viagra
viagra find sites computer href
edinburgh report pages search viagra
apcalis vs viagra
buy viagra online uk
hair growth with viagra
viagra free sites computer find href
edinburgh pages search viagra report
viagra otc
viagra uk purchase
viagra 20online 20stores
pharmacy viagra fuerteventura
viagra benefits
find viagra free sites computer href
viagra sex games
purchase viagra in australia
viagra online in canada
viagra supplier
viagras ad campaign
formula for viagra
snorting viagra
edinburgh viagra tid search charles linskaill
viagra availability at boots
does viagra work for woman
viagra news