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...)
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:
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:
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"
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:
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:
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:
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:
5) Set a breakpoint in one of the source files you've opened. I've set one in my "AppLogic" library:
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:
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:
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:
This backed the debugger up and continuing it we can see the results:
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:
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:
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.
- 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
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"
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:
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:
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:
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:
5) Set a breakpoint in one of the source files you've opened. I've set one in my "AppLogic" library:
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:
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:
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:
This backed the debugger up and continuing it we can see the results:
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:
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:
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
And yes, I can confirm, that debugging Java in a running Notes/Domino container is the best way to produce a crash. :-)
Posted by Karsten Lehmann At 04:17:53 PM On 08/09/2010 | - Website - |
Posted by Pierre At 11:33:48 PM On 08/09/2010 | - Website - |
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.
Posted by Matt Vargish At 11:10:28 AM On 08/10/2010 | - Website - |
{ Link }
Posted by Matt Vargish At 12:16:21 PM On 08/10/2010 | - Website - |
Posted by Jazzie30 At 01:34:10 PM On 08/10/2010 | - Website - |
{ Link }
Posted by Matt Vargish At 02:09:37 PM On 08/27/2010 | - Website - |
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).
---------------------------
Posted by fedor belov At 04:55:06 AM On 09/08/2010 | - Website - |
Posted by forex trading At 09:10:21 AM On 10/04/2010 | - Website - |
Posted by ed hardy At 02:07:34 AM On 10/20/2010 | - Website - |
<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>
Posted by Nike Shox Rivalry At 12:37:40 AM On 11/23/2010 | - Website - |
Posted by Air Max 90 pas cher At 01:30:52 AM On 12/16/2010 | - Website - |
emissions software
emissions software
Posted by emissions software At 04:22:04 AM On 12/16/2010 | - Website - |
emissions software
emissions software
Posted by emissions software At 04:22:19 AM On 12/16/2010 | - Website - |
Posted by gucci outlet online At 01:53:15 AM On 12/22/2010 | - Website - |
Posted by Javin @ Tibco messaging Tutorials At 11:26:07 AM On 03/05/2011 | - Website - |
{ 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
Posted by Air Jordan At 08:29:24 AM On 03/18/2011 | - Website - |
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>
Posted by nullGucci shoes wholesale At 03:40:54 AM On 04/14/2011 | - Website - |
{ Link }
UBB代码:
首页:
[url={ Link }
Posted by dewafea At 05:02:07 AM On 05/10/2011 | - Website - |
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.
Posted by Fab2B At 05:54:16 AM On 06/09/2011 | - Website - |
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>
Posted by nullmens gucci shoes At 11:15:59 PM On 08/08/2011 | - Website - |
Posted by Air Max pas cher At 01:03:40 AM On 08/20/2011 | - Website - |
Posted by cheap gucci jackets At 10:46:06 PM On 08/28/2011 | - Website - |
{ Link }
Posted by Cheap Coogi Shoes At 11:11:45 PM On 08/30/2011 | - Website - |
<a href=" { Link } Louis Vuitton Handbags</a>
<a href=" { Link } Sunglasses</a>
Posted by cheap nike shoes At 12:31:22 AM On 09/02/2011 | - Website - |
Posted by cheap gucci jeans At 10:11:19 PM On 09/05/2011 | - Website - |
Posted by Lacoste Sale At 03:00:55 AM On 09/10/2011 | - Website - |
<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>
Posted by hermes birkins At 08:45:49 PM On 09/28/2011 | - Website - |
<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>
Posted by jordan xiii At 11:03:18 PM On 09/28/2011 | - Website - |
Posted by miniature pigs for sale in virginia At 12:36:52 PM On 10/04/2011 | - Website - |
Posted by hermes birkins At 10:02:28 PM On 10/05/2011 | - Website - |
Posted by modern furniture 2012 At 09:27:46 AM On 10/07/2011 | - Website - |
Posted by north face denali At 12:12:52 AM On 10/11/2011 | - Website - |
Posted by Scaffold boards At 08:08:00 AM On 10/13/2011 | - Website - |
Posted by Moncler online At 04:08:59 AM On 10/19/2011 | - Website - |
Posted by replica watches At 12:44:05 AM On 10/20/2011 | - Website - |
{ Link }
Posted by new era hats At 08:56:02 PM On 10/24/2011 | - Website - |
{ Link }
Posted by new era hats At 09:05:47 PM On 10/24/2011 | - Website - |
Posted by the north face outlet shop At 02:51:43 AM On 10/25/2011 | - Website - |
Posted by Frisurentrends 2012 At 09:46:42 AM On 10/26/2011 | - Website - |
{ Link }
Posted by uggs sale At 03:38:56 AM On 11/02/2011 | - Website - |
Posted by בנטקס At 03:39:53 PM On 11/04/2011 | - Website - |
Posted by At 05:47:33 AM On 11/08/2011 | - Website - |
Posted by Moncler jackets At 08:54:49 PM On 11/08/2011 | - Website - |
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
Posted by moncler jacket for kids At 03:03:09 AM On 11/13/2011 | - Website - |
Posted by New Era Hats At 02:58:53 AM On 11/14/2011 | - Website - |
Posted by Nike Free run for women At 08:55:34 PM On 11/16/2011 | - Website - |
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 .
Posted by cheap wedding dresses At 03:17:46 AM On 11/18/2011 | - Website - |
Posted by cheap wedding dresses At 03:18:29 AM On 11/18/2011 | - Website - |
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>
Posted by nullmens gucci shoes At 06:44:45 PM On 11/22/2011 | - Website - |
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
Posted by moncler jacket for kids At 06:58:21 AM On 11/25/2011 | - Website - |
{ 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)
Posted by cheap NFL Jerseys At 03:41:14 AM On 12/01/2011 | - Website - |
Posted by Monster Beats Tour With controlTalk At 08:03:04 AM On 12/15/2011 | - Website - |