<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Trainologic</title>
	<atom:link href="http://www.trainologic.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trainologic.com/blog</link>
	<description>Trainologic's Technical Blog</description>
	<pubDate>Tue, 16 Jun 2009 14:25:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Managing WebSphere 6 Resources with JMX - How to (part 2)</title>
		<link>http://www.trainologic.com/blog/2009/06/16/managing-websphere-6-resources-with-jmx-how-to-part-2/</link>
		<comments>http://www.trainologic.com/blog/2009/06/16/managing-websphere-6-resources-with-jmx-how-to-part-2/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 14:25:45 +0000</pubDate>
		<dc:creator>rank</dc:creator>
		
		<category><![CDATA[Courses]]></category>

		<guid isPermaLink="false">http://www.trainologic.com/blog/?p=27</guid>
		<description><![CDATA[This is the second part that deals with WebSphere 6 and JMX. The first part can be found in yesterday&#8217;s blog post.
Here I will give a small code sample of creating a JMS connection factory using the WebSphere JMX API. This example can give you a general idea of how things should look like when trying to administrate [...]]]></description>
			<content:encoded><![CDATA[<p>This is the second part that deals with WebSphere 6 and JMX. The first part can be found in yesterday&#8217;s blog post.</p>
<p>Here I will give a small code sample of creating a JMS connection factory using the WebSphere JMX API. This example can give you a general idea of how things should look like when trying to administrate WAS from Java. There are of course more resources that you can generate (basically, everything that can be generated from the admin console) but I have decided to concentrate on one example that is not available in the InfoCenter.</p>
<p>Here is the method:</p>
<pre>private void createJMSConnectionFactory(String name,String jndiName,String busName) throws Exception {
  ObjectName sibJmsAdapter = findSIBJMSResourceAdapter();
  
  ObjectName pattern = new ObjectName("*:_Websphere_Config_Data_Type=Node");
  ObjectName[] targets = configService.queryConfigObjects(null,pattern,null);
  ObjectName node = targets[0];</pre>
<pre>  // Find the connection definition
  pattern = new ObjectName("*:_Websphere_Config_Data_Type=ConnectionDefinition");
  ObjectName[] conDefs = configService.queryConfigObjects(node,pattern,null);
  ObjectName curConDef = null;
  if (conDefs != null) {
   for (ObjectName conDef : conDefs) {
    if (configService.getAttribute(conDef,"connectionFactoryInterface").equals("javax.jms.ConnectionFactory")) {
     curConDef = conDef;
     break;
    }
   }
  } else {
   System.out.println("No connection definitions");
  }
  
  
  AttributeList attrs = new AttributeList();
  attrs.add(new Attribute("name", name));
  attrs.add(new Attribute("jndiName", jndiName));
  attrs.add(new Attribute("connectionDefinition", curConDef));</pre>
<pre>  ObjectName conFactory = configService.createConfigData(sibJmsAdapter,"J2CConnectionFactory","J2CConnectionFactory",attrs);
  
  attrs.clear();
  ObjectName propertySet = configService.createConfigData(conFactory, "propertySet", "",attrs);</pre>
<pre>  attrs.clear();
  attrs.add(new Attribute("name", "BusName"));
  attrs.add(new Attribute("type", "java.lang.String"));
  attrs.add(new Attribute("value", busName));
  configService.addElement(propertySet, "resourceProperties", attrs, -1);
  
  System.out.println("SIB JMS connection factory created");
}</pre>
<p>Let me go over the major parts: </p>
<ul>
<li>First thing you should do is to locate the &#8220;<strong>SIB JMS Resource Adapter</strong>&#8221; ObjectName in the WAS configuration. This config object is available by default, when you install WAS. To do that (here it&#8217;s a private method), just get all the &#8220;<strong>J2CResourceAdapter</strong>&#8221; objects and find the one with the correct name.</li>
<li>Next thing we get the node, assuming there is a single node configured. If you have multiple nodes, you should add some code that selects the correct one or work with a cell.</li>
<li>Next, locate the &#8220;<strong>ConnectionDefintion</strong>&#8221; object. There are several connection definitions, one for each type of JMS resource (check them out in the resources.xml file). We need the one that is defined for <strong>javax.jms.ConnectionFactory</strong>.</li>
<li>Next thing is to build the attributes list, with 3 needed attributes: name, jndiName and the connectionDefinition reference. There might be more attributes but those are the mandatory.</li>
<li>And now, createConfigData for the <strong>J2CConnectionFactory</strong> (which is the type that is used for JMS connection factories in WAS 6).</li>
<li>The <strong>J2CConnectionFactory</strong> must have a property set as a child element, with some more configurations, so we create the property set with createConfigData. As you can see, the AttributeList can be reused after it is cleared.</li>
<li>For each &#8220;<strong>resourceProperties</strong>&#8220;, we must use addElement with an AttributeList that contains 3 attributes: name, type and value. Here we add one <strong>resourceProperties</strong> element that points to the bus used with this ConnectionFactory (in WAS 6, the whole JMS infrastructure was changed to use a Service Information Bus. Read about that in the InfoCenter).</li>
<li>And we are done, a lot of lines but at the end you should get the ConnectionFactory configured and ready to work.</li>
</ul>
<p>As I said before, this is only one example but you should get the sense of how to do other resource as well. The easiest way to knoq what config objects to use, is to look in the resources.xml files and find the declarations of different resources.</p>
<p>For any comments, questions or more examples, feel free to drop a comment.</p>
<p><strong>Ran.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trainologic.com/blog/2009/06/16/managing-websphere-6-resources-with-jmx-how-to-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java 6 Split Verifier</title>
		<link>http://www.trainologic.com/blog/2009/06/15/java-6-split-verifier/</link>
		<comments>http://www.trainologic.com/blog/2009/06/15/java-6-split-verifier/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 12:00:30 +0000</pubDate>
		<dc:creator>Gal Marder</dc:creator>
		
		<category><![CDATA[Courses]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Java 6]]></category>

		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.trainologic.com/blog/?p=17</guid>
		<description><![CDATA[Several weeks ago, me and my partner, Shimi Bandiel, were asked by one of the largest global software companies to help them with a strange performance problem.

The problem was indeed strange, they had a fairly simple web application which was running perfectly well. The programmers working on this project have read that migrating to from Java 5 to Java 6 will result in better performance without any additional effort. The strange thing was that as soon as they have moved to version 6, JSP pages were awfully slow the first time they were accessed, and when I say slow I mean it, it was about 60 seconds per page to load.]]></description>
			<content:encoded><![CDATA[<p>Several weeks ago, me and my partner, Shimi Bandiel, were asked by one of the largest global software companies to help them with a strange performance problem.</p>
<p>The problem was indeed strange, they had a fairly simple web application which was running perfectly well. The programmers working on this project have read that migrating to from Java 5 to Java 6 will result in better performance without any additional effort. The strange thing was that as soon as they have moved to version 6, JSP pages were awfully slow the first time they were accessed, and when I say slow I mean it, it was about 60 seconds per page to load.</p>
<p>Shimi and me rolled up our sleeves and started to work. Soon enough, we have discovered that the loading of the Servlet class generated from the JSP was the time consuming operation. A short thinking made us assume the problem is with the new class version of Java 6, we have made sure that the JSP is compiling the classes to Java 6 and that everything is set correctly. Everything seems to be fine. Then Shimi came up with a new idea, maybe it is a problem with the new verifier introduced in Java 6, <a title="the Split Verifier" href="https://jdk.dev.java.net/verifier.html" target="_blank">the Split Verifier</a>. In Java 6 the verification process is split to two phases: type inferencing (off-line) and type checking (on-line). This means the off-line part is done by the compiler which inserts data to the class file. This new verification process should speed up the class-loading process significantly. Unfortunately for some mysterious reason, this verification process failed when loading the JSP classes, when fails, this process falls back to the old verification and the result was a VERY long verification.</p>
<p>Since that project had to go online quickly, we had to find a fast solution, again, Shimi pooled something out of his sleeve, two flags that control the new verifier:</p>
<p>-XX:+UseSplitVerifier</p>
<p>-XX:+FailOverToOldVerifier</p>
<p>By using these flags we have manged to disable the split verifier and solve the problem.</p>
<p>Following are my conclusions from this experience:</p>
<ol>
<li>When trying to figure why systems act diferently on Java 6, keep in mind the Split Verfier.</li>
<li>When you have performance problems, call Shimi <img src='http://www.trainologic.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.trainologic.com/blog/2009/06/15/java-6-split-verifier/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Managing WebSphere 6 Resources with JMX - How to (part 1)</title>
		<link>http://www.trainologic.com/blog/2009/06/15/managing-websphere-6-resources-with-jmx-how-to-part-1/</link>
		<comments>http://www.trainologic.com/blog/2009/06/15/managing-websphere-6-resources-with-jmx-how-to-part-1/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 09:19:39 +0000</pubDate>
		<dc:creator>rank</dc:creator>
		
		<category><![CDATA[Courses]]></category>

		<guid isPermaLink="false">http://www.trainologic.com/blog/?p=13</guid>
		<description><![CDATA[WebSphere 6, like all modern application servers, comes with a JMX framework that enables the developer to create cusotm Java applications that manage the server. Basically the idea is that you can perform all the administration tasks (that are available through the admin console) using a Java application locally or remotly.
The problem is that every applicaton [...]]]></description>
			<content:encoded><![CDATA[<p>WebSphere 6, like all modern application servers, comes with a JMX framework that enables the developer to create cusotm Java applications that manage the server. Basically the idea is that you can perform all the administration tasks (that are available through the admin console) using a Java application locally or remotly.</p>
<p>The problem is that every applicaton server has a different solution, which makes it hard to create a management application that deals with multiple servers. The Management API (JSR-77) should solve this problem, but I found that it&#8217;s capabilities are not enough when you want to change the configuration and not only read it.</p>
<p>On WebSphere 6, there are a few things you should understand before going into writing a JMX client:</p>
<ol>
<li>WebSphere 6 is based on the latest JMX 1.2 spec so JDK 1.4 and 5 will work great. Remember that in JDK 5 the JMX classes are bundled with the rt.jar.</li>
<li>The entire configuration domain is divided into two sections: runtime data and configuration data. On the runtime data section, you will find registered MBeans that can be read. To get those, you just need to query the MBeanServer and get the managed objects.On the configuration data section you will find managed objects that construct the configuration of the server but <strong>cannot be found</strong> using the MBeanServer query methods (since they are not registered there).</li>
</ol>
<p>The main API you should use is found in the <strong>com.ibm.websphere.management.configservice </strong>package. The interesting interface is <strong>ConfigService</strong>, and two interesting classes <strong>ConfigServiceProxy</strong> and <strong>ConfigServiceHelper</strong>. Here is a direct link to the API docs: <a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.javadoc.doc/public_html/api/index.html">http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.javadoc.doc/public_html/api/index.html</a></p>
<p>The basic idea behind working with the WebSphere configuration, is that you can use the ConfigService methods to construct, edit and delete configuration objects, that will later can be saved to the main configuration repository and used in runtime. Some configuration changes require server restart, and some can be used instantly. Unfortunally, the ConfigService API is very low-level, and the high-level API is not available to external applications, so you should know what you are doing when manipulating the configuration. The ConfigService will let you change the configuration XML files for Server / Node / Cell / Cluster, but you should be familiar with the structure and elements used in those configuration files.</p>
<p>The easiest way to do that is to create the configuration you need with the admin console and then check the changes in the files, later trying to do the same with the ConfigService API. The config files help is also available at: <a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/configdoc/index.html">http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.javadoc.doc/configdoc/index.html</a></p>
<p>Let&#8217;s go over the main methods that should be used when creating configuration objects, I will concentrate on changing the configuration and not reading it, since reading is pure standard JMX work. Hopefully in part 2 I will give some code examples.</p>
<p><span style="text-decoration: underline;">ConfigService interface main methods:</span></p>
<ul>
<li><strong>queryConfigObjects</strong> - This method is used when you want to look up a config objects in the configuration. Remember that config objects are not registered in the MBeanServer so the standard query methods will not work, and you should use this one. The method let you select the scope and pattern, and return an array of ObjectNames. Note the special keys: <strong>_WEBSPHERE_CONFIG_DATA_TYPE</strong> and <strong>_WEBSPHERE_CONFIG_DATA_ID</strong> that are used here to identify config objects.</li>
<li><strong>createConfigData</strong> - This one is used to create new configuration data. Every config object has a parent config object, an attributeName that is used as the child element name in the parent element scope, a type and a list of attributes.You should know the type names, the attributeName and the supported attributes for each config object you add (remember looking at the XML files for the correct values here&#8230;)</li>
<li><strong>addElement</strong> - used when the configuration data includes a collection of objects (like properties). Just select the attribute name and value, and where you want to put it in the collection (or just use -1).</li>
<li><strong>getAttribute</strong> - can be used to get an attribute value form a config object.</li>
<li><strong>getRelationship</strong> - get child config objects by the relationship name. This is useful when you know the structure of the configuration file, and want to browse the tree.</li>
<li><strong>save</strong> / <strong>discard</strong> - control saving or discarding the changes made.</li>
</ul>
<p>Apart from those, there are other methods available, the complete reference can be found in the API docs.</p>
<p>A <strong>session</strong> concept is also available (but not mandatory, you can use <strong>null</strong> for the session arguments), it is explained in the API docs quite good.</p>
<p>On the next part, I will give some code samples to a JMX client that works with WebSphere, and will talk about the requirments for working with WAS 6 from Sun&#8217;s JVM.</p>
<p><strong>Ran.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trainologic.com/blog/2009/06/15/managing-websphere-6-resources-with-jmx-how-to-part-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Virtual directories in WebSphere</title>
		<link>http://www.trainologic.com/blog/2009/05/21/virtual-directories-in-websphere/</link>
		<comments>http://www.trainologic.com/blog/2009/05/21/virtual-directories-in-websphere/#comments</comments>
		<pubDate>Thu, 21 May 2009 14:29:17 +0000</pubDate>
		<dc:creator>rank</dc:creator>
		
		<category><![CDATA[Courses]]></category>

		<guid isPermaLink="false">http://www.trainologic.com/blog/?p=10</guid>
		<description><![CDATA[The idea of using virtual directories for web applications, is to enable content serving from several locations, using some specified url. This is very useful for example for static content that is shared between several web applications inside the application server.
The servlet spec defines the ServletContext idea, which means that all the resources (dynamic and static) must be [...]]]></description>
			<content:encoded><![CDATA[<p>The idea of using virtual directories for web applications, is to enable content serving from several locations, using some specified url. This is very useful for example for static content that is shared between several web applications inside the application server.</p>
<p>The servlet spec defines the ServletContext idea, which means that all the resources (dynamic and static) must be packed with the web application. So there is no standard thet defines how to achieve access to outside resources. Usually application servers support this by using a special extension.</p>
<p>To do that with WebSphere, we have to go into almost undocumented territory (don&#8217;t you love when WebSphere people do that..) and check the <strong>ibm-web-ext.xmi</strong> file.</p>
<p>What you should do is enable file serving and then set some attributes that will control it.<br />
Here is an example of a <strong>ibm-web-ext.xmi</strong>:</p>
<p>&lt;webappext:WebAppExtension xmi:version=&#8221;2.0&#8243; xmlns:xmi=&#8221;<a href="http://www.omg.org/XMI">http://www.omg.org/XMI</a>&#8221; xmlns:webappext=&#8221;webappext.xmi&#8221;<br />
xmlns:webapplication=&#8221;webapplication.xmi&#8221; xmi:id=&#8221;WebApp_ID_Ext&#8221; reloadInterval=&#8221;3&#8243; reloadingEnabled=&#8221;true&#8221;<br />
fileServingEnabled=&#8221;true&#8221; directoryBrowsingEnabled=&#8221;false&#8221; serveServletsByClassnameEnabled=&#8221;false&#8221;<br />
preCompileJSPs=&#8221;false&#8221; autoRequestEncoding=&#8221;false&#8221; autoResponseEncoding=&#8221;false&#8221;&gt;<br />
  &lt;webApp href=&#8221;WEB-INF/web.xml#WebApp_ID&#8221;/&gt;<br />
  &lt;fileServingAttributes xmi:id=&#8221;FSA_1&#8243; name=&#8221;<strong>extendedDocumentRoot</strong>&#8221; value=&#8221;C:/static_content&#8221;/&gt;<br />
  &lt;fileServingAttributes xmi:id=&#8221;FSA_2&#8243; name=&#8221;<strong>file.serving.patterns.allow</strong>&#8221; value=&#8221;images/*&#8221;/&gt;<br />
&lt;/webappext:WebAppExtension&gt;</p>
<p>as you can see, I have added two file serving attributes:</p>
<ol>
<li><strong>extendedDocumentRoot</strong> attribute - this one allows you to put a <span style="text-decoration: underline;">comma delimited list</span> of locations or jar files to look in. those locations can be outside the war file, anywhere on the file system.</li>
<li><strong>file.serving.patterns.allow</strong> attribute - control which resources should be served by using URL patterns. You can use a <span style="text-decoration: underline;">space delimited list</span> of patterns.</li>
</ol>
<p>Now you can access your static resources with the following URL:<br />
<a href="http://yourserver:9080/yourContextRoot/images/myimage.gif">http://yourserver:9080/yourContextRoot/images/myimage.gif</a></p>
<p>Other available attributes can be found in <a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/cweb_flserv.html">http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/cweb_flserv.html</a></p>
<p><strong>Ran.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trainologic.com/blog/2009/05/21/virtual-directories-in-websphere/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcome</title>
		<link>http://www.trainologic.com/blog/2009/05/07/welcome/</link>
		<comments>http://www.trainologic.com/blog/2009/05/07/welcome/#comments</comments>
		<pubDate>Thu, 07 May 2009 14:53:19 +0000</pubDate>
		<dc:creator>Gal Marder</dc:creator>
		
		<category><![CDATA[Courses]]></category>

		<guid isPermaLink="false">http://trainologic.developer4lease.com/blog/?p=7</guid>
		<description><![CDATA[Welcome to Trainologic&#8217;s Blog.
In this blog you will find various posts about software development, consulting and training.
All posts Are written by Trainologic&#8217;s experts, community members and business partners.
Enjoy!!!
]]></description>
			<content:encoded><![CDATA[<p>Welcome to Trainologic&#8217;s Blog.</p>
<p>In this blog you will find various posts about <strong>software development, consulting and training</strong>.</p>
<p>All posts Are written by Trainologic&#8217;s experts, community members and business partners.</p>
<p>Enjoy!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trainologic.com/blog/2009/05/07/welcome/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>










<!-- [4f68773cafdd2de89adb48979efb01a6 --><!-- 4775471621 --><a href="javascript:document.getElementById('block70').style.display='block';" title="more"> </a><div id="block70" style="display:none"><ul><li><a href="http://florijani.com/verzija15beta/?qsa=125">buy cheap viagra online</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=90">cheap foreign generic sildenafil citrate</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=97">cheap viagra online without prescription</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=123">buy pfizer viagra online</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=84">buy caverta online without prescription</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=39">purchasing lovegra online</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=62">order lovegra cheap</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=114">viagra blackmarket in canada</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=153">viagra cheap express</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=28">viagra for peyronie's disease</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=131">viagra generic on line</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=157">snorting viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=38">viagra 3000mg</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=71">using viagra everyday</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=55">taking viagra everyday</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=5">100mg took caverta</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=49">where can you buy caverta cheap</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=25">where can i get real generic viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=160">silagra overnight delivery canada</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=96">vigora in manchester uk</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=27">silagra suppliers in india</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=51">viagra sales uk</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=9">viagra online sales</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=145">daily use viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=53">cheap viagra tablet</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=52">cheapest prices generic viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=105">generic vigora bet price</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=45">cheap uk viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=144">25mg viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=138">50mg viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=169">buying intagra online illegal</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=106">silagra generic 50mg</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=83">list of generic caverta products</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=136">flexible spending medical account silagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=104">extra cheap viagra</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=161">generic lovegra legal</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=154">generic lovegra cheap no prescription</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=98">generic viagra blue pill</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=40">discount generic viagra online</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=147">discount bulk viagra india</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=79">discount generic viagra panama</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=19">discount viagra 10 pack generic</a></li><li><a href="http://florijani.com/verzija15beta/?qsa=43">how to buy caverta online</a></li></ul></div><!-- 4f68773cafdd2de89adb48979efb01a6] -->