« To See Or Not To See? That Is The Question. | Main| Such A Shame There Is So Much Corn To Harvest Out There... »

Debugging Java (and XPages) in DDE

I've been experimenting with debugging Java in Agents, Java Script Libraries, and XPages directly in DDE using the Eclipse debugger and remote debugging.   Since I haven't seen much on the topic, I thought I'd post what I've learned here, in case it's of use, and out of curiosity if others had tips to share.

Ever since Java was introduced to Notes we've been without an integrated debugger for Java.  I'm sure I'm not the only one who hoped we'd finally see it in Domino Designer in Eclipse (DDE).  True, the Eclipse/Expeditor foundation of DDE includes the Eclipse Java debugger, but to date we still have no easy way to launch it to debug Java in the context of a Notes database.
(  read more...)
There are options for debugging Java external to Notes, including:
  • Create an alternate entry point in an external project that provides access to Domino objects for testing via Notes.jar or NCSO.jar and debug as a stand-alone app, as Bob Balaban has outlined in his oft-cited topic "The 2-Headed Beast"
  • Compile Java for debug in an external project and import it into an Agent of type "Imported Java" and debug it remotely.
  • Compile Java in Notes (with "Compile Java Code with debugging information" selected), export the source to an external project, and debug it remotely.

These approaches all work well but also suffer from being heavy on configuration:  creating projects (with the correct JVMs, build paths, external libs, etc.); and synching code to and from Notes.  In my opinion, they are still the best options when developing any significant body of code.

Sometimes, however, it'd be nice to just pop into the debugger and see what's happing in a piece of code, one that already lives in a Java Script Library or Agent.  Without setting up projects etc.

You can do this in DDE 8.5.1 today, but there are some caveats:
  • the debugger doesn't always behave well in DDE
  • some buttons are not available, notably the "step" buttons on the debug view
  • Notes occasionally moves source code around on the file system
I'll detail these as I go.  So this technique isn't for everyone or every situation.  But it is a quick and dirty way to get into the debugger if it suits your needs.

But first a warning:

**Warning**  Do this at your own risk.  If you try this, you will probably hang/crash DDE, Notes and even your server while you figure it out.  NSD -kill is your friend.  If you're looking for a "safe" way to do this, see the options above.

Debugging Agents in DDE

Okay, let's go...  Here's some background. I've tested this on a local Domino 8.5.1 server and 8.5.1 client, although you can probably do some of this with in the client (more on that later).

Because Notes and Domino allow us to run the JVM in debug mode and attach remotely, the main obstacle to debugging is being able to locate source code, so that we can set breakpoints and step through.

Luckily, when you open a Java element in DDE, it create projects for that code on the file system.  So the trick here is to locate the correct code, and make sure the debug configuration picks it up.


The steps in brief are:
1) Enable the JVM for debugging
2) Open the Java elements you wish to debug in DDE
3) Locate the source code projects DDE has created
5) Create a remote debugging configuration that points to the projects DDE created
5) Set breakpoints(s) in the source
6) Launch the configuration and Trigger the code in a way that does not block the client
7) Start debugging


1) Enable remote debugging on the Domino server by editing notes.ini to include the following lines:

JavaEnableDebug=1
JavaDebugOptions=transport=dt_socket,server=y,suspend=y,address=<portnumber>

Where <portnumber> represents an available port on your machine (I use 8888).  Restart the server.


2) Open DDE and open the design elements you want to debug.  For Java Agents, at minimum, the Java Agent itself.

NOTE:  Be sure any code you want to debug has been compiled with debug information (check "Compile Java code with debugging information" on the design element and re-compile if necessary).

In this screenshot, I've opened the Agent "JavaProcessing" which includes a Java Script Library, "AppLogic"

A picture named M2



3) In the background, Notes has quietly gone and added the source code for a project in my data\workspace directory for both the Agent and the Library:

A picture named M3

This is the source code that our debug configuration will find when we start debugging.  Note that you can confirm that the file opened in the editor lives here by hovering over  it's tab:

A picture named M4

Notes may -- for reasons unclear to me -- create new folders at times when you open databases, incrementing the numbers in parenthesis.  This information is significant when creating the debug configuration so you may want to note it.  If an old copy of the code is still on your system and picked up by the debugger as source, things get confusing!



4) With the cursor in the Java editor for the Java Agent source create a debug configuration (via Run>Debug Configurations, select "Remote Java Application" and create a new one), but do not launch it yet:

A picture named M5


Note that the Project matches the name of the Agent Project DDE created, and the port number matches what's in the server's INI.   Obviously Host should specify the IP address of your server.  

On the Source tab, you can confirm that the source search includes the correct projects for both the Agent and the Library.  Because the selected editor in DDE was in the Agent, this list should also contain the library project it depended on:

A picture named M6



5) Set a breakpoint in one of the source files you've opened. I've set one in my "AppLogic" library:

A picture named M7



6) Switch to the Java Debug perspective (via Window>Open Perspective>Other).  Note that once you've done this, you can quickly switch between loaded perspectives by the shortcut CTRL+F8

Now that we're ready to try it, we need launch the debug configuration and cause the code to execute on the server.   These actions can happen in either order but must be done in quick succession so that they occur while the first one is paused waiting for the second.

In the example, I'm running the Agent by URL in a browser (note that if you choose to have another agent call it via RunOnServer, that agent must be set to run in a background thread, or you'll  hang the client as the agent and debugger fight for focus).

Launch the debug configuration created earlier via Run>Debug Configurations.

Give things a little while to connect, and with any luck you'll shortly arrive at the first breakpoint, with the debugger paused in the thread running the Agent:

A picture named M8

A picture named M9


You can now step through the code.  Notice that in the first screenshot, however, that the usual "step" buttons are missing from the debug view.  You can use the Run menu, or keyboard shortcuts listed there to continue execution:

A picture named M10

Another caveat about the debugger used this way:  sometimes the focus in DDE jumps around and you can end up focused somewhere where the step commands aren't valid.  Click on either the active source code or the "Suspended" entry in the debug view to be able to continue.  When you are done debugging, be sure the thread as exited completely (F8) in the debug view.


One nice thing about this approach is that you can actually live-edit code and have it hot-swapped.  Here I've changed some text and saved both the Java file and the Agent document while the debugger was attached:

A picture named M11

This backed the debugger up and continuing it we can see the results:

A picture named M12



XPages debugging

It is possible to debug XPages Java using this technique as well, although that would primarily be useful for understanding the underlying rendering of the page, or custom Java classes (for example Managed Beans backing the page).  Karsten Lehmann has written some excellent stuff about this over at Mindoo.com:

http://www.mindoo.com/web/blog.nsf/dx/20.07.2010094952KLEB7R.htm
http://www.mindoo.com/web/blog.nsf/dx/16.07.2009095816KLEBCY.htm

The trick, again is locating the file system source code and making sure it's included in the debug configuration. This can be done by opening the XPage, switching to the Java perspective, and opening the file named for the XPage java file in the Local package via the Package Explorer view:

A picture named M13

Make sure this project is included in the debug configuration, set a breakpoint, trigger the XPage (via browser so it runs the code on the server), and you should be good to go:

A picture named M14




Notes Client debugging

Finally, it should be possible to do this on the client as well, using either the options in under Tools>Java Debugging Preferences, or for XPages, a special launch configuration for Notes (See the first link to Mindoo, above, for details).  Bear in mind, when running on a client, you'll need to be aware of which JVM instance is running the code (depending on how invoked) and on what port the JVM listens for the debugger.


Feedback?

So there you have it.  I'd love to hear of any errors, omissions, additional caveats, or tips.

Category

Comments

1 - Great article!
And yes, I can confirm, that debugging Java in a running Notes/Domino container is the best way to produce a crash. :-)

2 - Really wish it would be easier to do Java on Notes/Domino.

3 - @Karsten - Thanks.

I've found it to be fairly stable so far when the code is running on the server as long as you avoid two things:

- doing something else that causes Notes to block while the debugger might get activated (prime example: calling your server agent via .runOnServer in a foreground agent).

- failing to step/resume all the way out of the code, which is easy to do when you start switching perspectives. I now check the debug view to make sure nothing is still suspended.

Other than that, hangs/crashes seem occasional enough to tolerate for short sessions.

4 - If you're working with XPages and looking into writing Backing Beans, don't miss the excellent stuff Jeremy Hodge is writing over at xpagesblog.com, for example:

{ Link }

5 - Java is a popular high language computer language that is used all over the world. Even if you are knowledgeable on languages like C and C++, you can undergo <a href="{ Link } training</a> to make your resume shine in the next interview you appear for.

6 - Update: I was just catching up on some blog reading and realized Bob Balaban had beat me to covering some of this stuff in a post on debugging Agents as java applications in DDE. Good stuff.

{ Link }

7 - Hello. I'm getting an error "Failed to connect remove VM. Connection refused"

Can you explain in more clear way this part:
---------------------------
Now that we're ready to try it, we need launch the debug configuration and cause the code to execute on the server. These actions can happen in either order but must be done in quick succession so that they occur while the first one is paused waiting for the second.

In the example, I'm running the Agent by URL in a browser (note that if you choose to have another agent call it via RunOnServer, that agent must be set to run in a background thread, or you'll hang the client as the agent and debugger fight for focus).
---------------------------


8 - I'm working with Xpages and it is quite easy.

9 - In the shop<a href="{ Link } hardy</a> we can buy different Ed hardy

10 - <a href="{ Link } Shox</a>
<a href="{ Link } Air Max</a>
<a href="{ Link } Max 90</a>
<a href="{ Link } Air Max 90</a>
<a href="{ Link } Shox Rivalry</a>

<a href="{ Link } air max</a>
<a href="{ Link } air max 90</a>
<a href="{ Link } shox</a>

<a href="{ Link } watch</a>
<a href="{ Link } Watches</a>
<a href="{ Link } Watches</a>
<a href="{ Link } watches</a>
<a href="{ Link } Watches</a>
<a href="{ Link } Watches</a>

<a href="{ Link } Vuitton Handbags</a>
<a href="{ Link } Handbags</a>
<a href="{ Link } Handbags</a>
<a href="{ Link } Handbags</a>
<a href="{ Link } Handbags</a>

<a href="{ Link } Hardy</a>
<a href="{ Link } Hardy Clothing</a>

<a href="{ Link } Air Max pas cher</a>
<a href="{ Link } Max pas cher</a>
<a href="{ Link } pas cher</a>
<a href="{ Link } Shox Pas cher</a>
<a href="{ Link } Nike Pas cher</a>
<a href="{ Link } pas chere</a>
<a href="{ Link } Max 90</a>
<a href="{ Link } Nike</a>
<a href="{ Link } Nike</a>

11 - Thanks for a great post and interesting comments.

12 - emissions software
emissions software
emissions software

13 - emissions software
emissions software
emissions software

14 - Luckily, when you open a Java element in DDE, it create projects for that code on the file system. So the trick here is to locate the correct code, and make sure the debug configuration picks it up.

15 - I mostly <url="{ Link } eclipse for remote debugging [/url]. its very easy to setup and its very useful for troubleshooting production issues on large enterprise application, specially if your application is live and you don't have proper development environment setup in your Dev box.

16 - { Link } Air Jordan
{ Link } Cheap Jordan Shoes
{ Link } Jordan Basketball Shoes
{ Link } Nike Air Yeezy
{ Link } Air Jordan 2011
{ Link } Air Jordan 1
{ Link } Air Jordan 2
{ Link } Air Jordan 3
{ Link } Air Jordan 4
{ Link } Air Jordan 5
{ Link } Air Jordan 6
{ Link } Air Jordan 7
{ Link } Air Jordan 8
{ Link } Air Jordan 9
{ Link } Air Jordan 10
{ Link } Air Jordan 11
{ Link } Air Jordan 12
{ Link } Air Jordan 13
{ Link } Air Jordan 14
{ Link } Air Jordan 16
{ Link } Air Jordan 17
{ Link } Air Jordan 18
{ Link } Air Jordan 19
{ Link } Air Jordan 20
{ Link } Air Jordan 21
{ Link } Air Jordan 23
{ Link } Air Jordan 24
{ Link } Air Jordan 25
{ Link } Air Jordan 26
{ Link } Air Jordan 2010
{ Link } Jordan Trunner Q4
{ Link } Air Jordan Pro Classic
{ Link } Nike Air Jordan Pantone 284
{ Link } Jordan Pro Strong
{ Link } Air Jordan Take Flight
{ Link } Air Jordan Flight 45 High
{ Link } Air Jordan Fusion 4.5 (AJF 4.5)
{ Link } Air Jordan Women


17 -


This is a wonderful article, very well written. This is a good article
I've ever seen one. Will certainly have everyone's praise. Here we can
learn together, which is good, our knowledge have been improved. Let us
more confidence in life, it had a more pleasant, thank you!
<br/><a href="{ Link } rel="nofollow">gucci sandals for women</a>
<br/><a href="{ Link } rel="nofollow">mens gucci shoes</a>
<br/><a href="{ Link } rel="nofollow">gucci shoes wholesale</a>
<br/><a href="{ Link } rel="nofollow">gucci ankle boots</a>
<br/><a href="{ Link } rel="nofollow">cheap gucci handbag</a>
<br/><a href="{ Link } rel="nofollow">Gucci cap</a>
<br/><a href="{ Link } rel="nofollow">gucci slipper</a>
<br/><a href="{ Link } rel="nofollow">gucci hobo handbags</a>
<br/><a href="{ Link } rel="nofollow">Gucci men shirts</a>
<br/><a href="{ Link } rel="nofollow">Gucci Jeans</a>
<br/><a href="{ Link } rel="nofollow">gucci dress shirts</a>









18 - <a href="{ Link } rings</a>
{ Link }

UBB代码:
首页:
[url={ Link }

19 - Great article.

Two comments :

- Your Notes.INI modifications doesn't work for me, jvm can't be launched. I used this syntax (with another port) :
JavaEnableDebug=1
JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000

- DIIOP MUST be loaded to permit the connexion with the JVM (error : Failed to connect remove VM. Connection refused) !!

Fab2b.

20 -





This is a very unique content article, written in a
very classic, written in this article are now very
few people, very unique. Of course, the author must
also be very fond of ancient literature, from his
writing style and characteristics of the point of
view. Very characteristic of ancient literature,
ancient literature to draw from the essence.
Were applied to modern literature.
<br/><a href="{ Link } rel="nofollow">gucci sandals</a>
<br/><a href="{ Link } rel="nofollow">gucci shoes wholesale</a>
<br/><a href="{ Link } rel="nofollow">mens gucci shoes</a>
<br/><a href="{ Link } rel="nofollow">gucci shoes wholesale</a>
<br/><a href="{ Link } rel="nofollow">cheap gucci handbag</a>
<br/><a href="{ Link } rel="nofollow">gucci slipper</a>
<br/><a href="{ Link } rel="nofollow">Gucci men shirts</a>
<br/><a href="{ Link } rel="nofollow">Gucci cap</a>
<br/><a href="{ Link } rel="nofollow">Gucci Jeans</a>
<br/><a href="{ Link } rel="nofollow">wholesale ugg boots</a>




21 - Thanks for providing such a great article,Thank you for sharing the information.I like it very much.it is of vital importance for me.

22 - The Tory burch shoes are very popular with young ladies. It is one of the most famous brand in the fashion world. They are unique and comfortable. Even more tantalizing, cheap tory burch shoes can make your legs look as slender as you can, it will make you more attractive. Moreover, it has reasonable price in the tory burch outlet.

23 - Thank you for the tutorial! Those are extremely cute!
{ Link }

24 - <a href=" { Link } nike shoes</a>
<a href=" { Link } Louis Vuitton Handbags</a>
<a href=" { Link } Sunglasses</a>

25 - Tory burch shoes are popular to women all over the world for its unique lonking and fine material. Cheap tory burch shoes are essential to every gilr. With them, you will be more noble and sexy. Moreover, the professional design makes your feet more comfortable. If you are a fashionable woman, do not miss it.

26 - This is so cool. I almost missed the event if it were not for the BBC broadcast recommendation! Thanks.

27 - it seems to be insteresting for your paper here.
<a href="{ Link } birkin handbag</strong></a>
<a href="{ Link } handbags birkin</strong></a>
<a href="{ Link } birkin 35</strong></a>
<a href="{ Link } bag hermes</strong></a>
<a href="{ Link } hermes birkin</strong></a>
<a href="{ Link } birkin 40cm</strong></a>
<a href="{ Link } birkins</strong></a>
<a href="{ Link } birkin 25</strong></a>
<a href="{ Link } hermes birkin</strong></a>
<a href="{ Link } birkin 30cm</strong></a>
<a href="{ Link } birkin sale</strong></a>
<a href="{ Link } hermes birkin</strong></a>

28 - You clearly know what you are doing. It's good to see this information in your article.
<a href="{ Link } jordan 13</strong></a>
<a href="{ Link } 13</strong></a>
<a href="{ Link } 13 playoff</strong></a>
<a href="{ Link } xiii playoff</strong></a>
<a href="{ Link } 13 retro</strong></a>
<a href="{ Link } xiii</strong></a>
<a href="{ Link } 13 for sale</strong></a>
<a href="{ Link } jordan 13 playoffs</strong></a>
<a href="{ Link } 13 low</strong></a>
<a href="{ Link } jordan retro 13</strong></a>

29 - I love quotations because it is a joy to find thoughts one might have, beautifully expressed with much authority by someone recognized wiser than oneself.

30 - His father tell me that there are some <a href="{ Link } face vest</strong></a> also with <a href="{ Link } face backpacks</strong></a> at <a href="{ Link } north face</strong></a> store. En, i think it is real <a href="{ Link } north face jackets</strong></a> with my style.

31 - Better to remain silent and be thought a fool than to speak out and remove all doubt.

32 - Fashionable <a href="{ Link } face denali</strong></a> and <a href="{ Link } face fleece jackets</strong></a> at <a href="{ Link } face denali jacket</strong></a> online hut. there is amazing with <a href="{ Link } Face fleece jackets clearance</strong></a> now.

33 - Pay no attention to what the critics say... Remember, a statue has never been set up in honor of a critic!

34 - Real <a href="{ Link } Moncler</strong></a> here. 2011 new <a href="{ Link } online</strong></a> on sale at <a href="{ Link } sale</strong></a> outlet now.

35 - [url={ Link } replica[/url]

36 - { Link }
{ Link }

37 - { Link }
{ Link }

38 - often there is a brightly lit store, someone asked: "are you in the end what the store brand of tube? So durable." Stores said: "We usually have a bad lamp, but for us it is broken on . "bright and original way to keep it simple, as long as you can usually replace.

39 - The Internet is like alcohol in some sense. It accentuates what you would do anyway. If you want to be a loner, you can be more alone. If you want to connect, it makes it easier to connect.

40 - Welcome to shop at <strong><a href="{ Link } title="Uggs Australia">Uggs Australia</a></strong> online store,here we offer high quality uggs boots with a large discount.Uggs cheap online sale for your best choice. In order to adapt to the needs of the broad masses, Ugg create both soft and fashionable snow boots.We have <strong><a href="{ Link } title="Ugg Clearance">Ugg Clearance</a></strong> cheap on sale.100% high quality, cheapest price.<strong><a href="{ Link } title="Uggs Clearance UK">Uggs Clearance UK</a></strong> will be your best choice.What's more,you can match it with a stylish moncler jacket,we have <strong><a href="{ Link } title="Moncler Outlet">Moncler Outlet</a></strong> cheap on sale here.<strong><a href="{ Link } title="Moncler Outlet Store">Moncler Outlet Store</a></strong> will greatly meet your needs.<strong><a href="{ Link } title="UGG Boots Clearance Outlet">UGG Boots Clearance Outlet</a></strong> Welcomes you.<strong><a href="{ Link } title="Uggs Boots Clearance">Uggs Boots Clearance</a></strong> be your best choice.<strong><a href="{ Link } title="Moncler Outlet">Moncler Outlet</a></strong>.<strong><a href="{ Link } title="uggs boots on sale">uggs boots on sale</a></strong>.<strong><a href="{ Link } title="Moncler Online Shop">Moncler Online Shop</a></strong>,<strong><a href="{ Link } title="Uggs UK">Uggs UK</a></strong>,<strong><a href="{ Link } title="ugg boots uk">ugg boots uk</a></strong>.
{ Link }

41 - Debugging Java in DDE is great for all sites and I hope more people would understand it in the future.

42 -

43 - we talk about where is <a href="{ Link } online</strong></a>, which offers <a href="{ Link } outlet</strong></a>. My friends just agree with <a href="{ Link } jackets</strong></a> clearance will be ok.

44 -
Moncler Jacket Outlet
Moncler scarf cap
Grey moncler scarf cap
Moncler nible quilted snow boots
Moncler jackets for kids
Moncler kids jackets
Moncler men's black quilted body warmer vest
Moncler men's branson jacket black
Moncler Men's Branson Jacket purple
Moncler Branson navy jacket
Moncler navy jacket dark blue
Moncler brown quilted body warmer vest
Moncler down jackets black for man
Moncler men's field jacket blue for man
Moncler men's field jacket brown
Moncler men's full zip hoody black
Moncler men's full zip hoody grey
moncle full zip hoody white
moncler men's hoddy vest red
Moncler mens' hooded down jacket black
Moncler men's hoody black
Moncler man's hoody grey
Moncler hoody vest black
Moncler men's hoody white
Moncler jacket brown
Moncler mens monestier clermont no52 tshirt
Moncler mens monestier clermont no52 grey tshirt
Moncler mens monestier clermont no52 white tshirt
Moncler men's polo shirt black
Moncler men's polo shirt grey
moncler men's polo shirt white
men's moncler quilted body warmer vest
men's moncler quilted body warmer vest
Moncler Men's short sleeve polo shirt black

45 - Thanks for your infor

46 - This is worth to read,<a href="{ Link } Nike Free run</strong></a> everyone enjoy it <a href="{ Link } Free run sale</strong></a>.Good article <a href="{ Link } Nike Free run</strong></a>. I thank you can share with me <a href="{ Link } Free run for women</strong></a>.<a href="{ Link } Free run for cheap</strong></a>.

47 -
weddingdresslove.co.uk is a professional wedding dresses sold webiste. we provide beautiful, fashionable delicate and good quality wedding dresses. We do both wholesale and retail business. you can find your suitful bridal dresses here .

48 - <br />weddingdresslove.co.uk is a professional wedding dresses sold webiste. we provide beautiful, fashionable delicate and good quality wedding dresses. We do both wholesale and retail business. you can find your suitful bridal dresses here .<br />

49 -




This is a very unique article, the contents of
the article by everyone's favorite, with knowledge of
the subject of our current society, knowledge is power,
that is creative, a good article can give you the
knowledge, the same will change a person's view,
when a good article must be persuasive to convince
the others, so do it their own way, of course,
a person is important.
<br/><a href="{ Link } rel="nofollow">gucci sandals</a>
<br/><a href="{ Link } rel="nofollow">gucci shoes wholesale</a>
<br/><a href="{ Link } rel="nofollow">mens gucci shoes</a>
<br/><a href="{ Link } rel="nofollow">gucci slipper</a>
<br/><a href="{ Link } rel="nofollow">Gucci men shirts</a>
<br/><a href="{ Link } rel="nofollow">Gucci cap</a>
<br/><a href="{ Link } rel="nofollow">Gucci Jeans</a>




50 - Moncler Jacket Outlet
Moncler scarf cap
Grey moncler scarf cap
Moncler nible quilted snow boots
Moncler jackets for kids
Moncler kids jackets
Moncler men's black quilted body warmer vest
Moncler men's branson jacket black
Moncler Men's Branson Jacket purple
Moncler Branson navy jacket
Moncler navy jacket dark blue
Moncler brown quilted body warmer vest
Moncler down jackets black for man
Moncler men's field jacket blue for man
Moncler men's field jacket brown
Moncler men's full zip hoody black
Moncler men's full zip hoody grey
moncle full zip hoody white
moncler men's hoddy vest red
Moncler mens' hooded down jacket black
Moncler men's hoody black
Moncler man's hoody grey
Moncler hoody vest black
Moncler men's hoody white
Moncler jacket brown
Moncler mens monestier clermont no52 tshirt
Moncler mens monestier clermont no52 grey tshirt
Moncler mens monestier clermont no52 white tshirt
Moncler men's polo shirt black
Moncler men's polo shirt grey
moncler men's polo shirt white
men's moncler quilted body warmer vest
men's moncler quilted body warmer vest
Moncler Men's short sleeve polo shirt black

51 -
{ Link } cheap jerseys
{ Link } (Cheap moncler jackets)
{ Link } (cheap nfl jerseys)
{ Link } (NFL Jerseys Cheap)
{ Link } (NFL Jerseys Cheap)
{ Link } (NBA Jerseys Cheap)
{ Link } (cheap nfl jerseys)
{ Link } (cheap bags)
{ Link } (cheap oakey sunglasses)
{ Link } (birkenstock sandals sale)
{ Link } (cheap birkenstock sale)
{ Link } (nba cheap jerseys)
{ Link } (nba jerseys cheap)
{ Link } (cheap jerseys)
{ Link } (nfl jerseys cheap)
{ Link } (cheap jerseys nfl)
{ Link } (cheap nfl jerseys)
{ Link } (gucci clothing cheap)

52 - { Link }

Post A Comment

Feeds

Custom Button Custom Button

Category Cloud

Disclaimer

The views expressed by the authors on this blog do not necessarily reflect the views of Teamstudio, those who link to this blog, or even the author’s mother, father, sister, brother, uncle, aunt, grandparents, cousins, step relations, any other blood relative - and sometimes not even the author himself or herself.

Comments on this website are the sole responsibility of their writers and it is assumed those writers will take full responsibility, liability, and blame for any libel or litigation that results from something written in, or as a direct result of something written in, a comment. The accuracy, completeness, veracity, honesty, exactitude, factuality and politeness of comments are not guaranteed. Oh, how they are SO not guaranteed.
en-us,en;q=0.5OFFCCBot/1.0 (+http://www.commoncrawl.org/bot.html)38.107.179.211www.getthemostfromnotes.comHTTP/1.180Lotus-Domino/tsblog.nsf/d6plinks/KFRA-886LD3