text:
JRun 4Available Hotfixes for JRun Configuring Individual JVM settings for each JRun instanceChanging the default properties for server event logsConfiguring the location of the err and out log files
Debugging Hangs in JRun 4Generating and Interpretting thread dumps Thread dumps can provide all the information you need to debug hangs performance problems in JRun 3 & 4
In my last blog posting I discussed the advantages of using MaxMind GeoIP to obtain a site
visitors geographical location based on their IP. In this posting I
will show you how to integrate GeoIP into your site using ColdFusion.
If you are a ColdFusion developer the most challenging part is getting
the java source compiled and into a jar file so that you can leverage
the GeoIP Java API in ColdFusion. I have made it easier by taking care
of this process
The first thing you will need to do is download the example and jar file.
Since this example was written using the Lite version of GeoIP you will
need to download the Binary version of the Lite database. After you get
it up and running you can download and just replace the .dat file with
the full binary version. Go to http://www.maxmind.com/app/geolitecity and look under the section that says "Binary Format", click on the
"Download the latest GeoLite City Binary Format" link. After that
go ahead and extract the .dat file from the zip.
The zip file that you downloaded above will contain a jar file and
two ColdFusion files. Follow along with the steps below and you will be
up and running quickly.
You should be able to take this example code and quickly integrate
it into your own site. Overall it is pretty simple, if you are not
using an Application.cfc file you will just need to add it to your
Application.cfm file. Make sure you add logic so that it only is
initialized once. The initial load is a bit expensive but it loads the
entire database into memory. It is only about 25MB but it is worth the
performance gain you get since you can support hundred-thousands of
queries a second. The UDF in the index.cfm file is a little bit bloated
but there is some reasoning behind it. When I started using this
approach I had already been using IP2Location and had a predefined
query structure that I had to adapt to. You can probably simplify the
approach for the UDF if you choose to. If there are any other questions
feel free to post them or email me.
Early this year I wrote a blog article about using
IP2Location to identify a users location and ISP based upon their IP.
You can find the previous articles here:
The flaw with this approach is that the data was stored into a
database of 4 million rows and it was very expensive to do the lookups
even with the performance optimizations of splitting the data up across
multiple tables. Recent research has turned up a more optimal approach
using GeoIP with a binary based solution that will support several hundred requests
per second. Yes that is right, several hundred requests per second. The
initial setup and configuration takes a bit of time to get going but it
is very simple to update and maintain.
GeoIP is a technology from MaxMind that provides developers with a
non-invasive way to determine geographical and other information about
their Internet visitors in real-time. When a person visits your
website, GeoIP can determine which country, region, city, postal code,
area code the visitor is coming from. Furthermore, GeoIP can provide
information such as longitude/latitude, connection speed, ISP, company
name, domain name, and whether the IP address is an anonymous proxy or
satellite provider. In my findings and experimentation I have found
that GeoIP is also more accurate than IP2Location.
GeoIP features multiple binary files with different features
available based on the price that you pay. A listing of the different
versions can be found here. For my practical purposes I used both the City and ISP versions. Another great thing that MaxMind offers is a GeoLite City version that is free that you can use to test integration with your system. All
of the API's are exactly the same but it is less accurate than the
version you purchase.
The final selling point for me with GeoIP is the different API's
that they support. You can integrate it with almost any system using
(Java, C, Perl, PHP, VB.net, MS Com....and many others).
Since I was using ColdFusion I chose to go the Java route. If you are
not experienced with Java you may stumble a bit here but I plan on
posting the Jar that I built for integration along with sample code to
make it very easy to first try the Lite version then use the full
version if it works well for you. You can find the Java source here along with the GeoLite version.
If you are experienced with Java and ColdFusion it is pretty
straightforward to get up and running. You will just need to compile
the java source and build a jar, then place it in the classpath of
ColdFusion. It is as easy as instantiating the Java object from CF then
making calls to retrieve the information. I recommend encapsulating
this into a function and loading the reference to the Java object in an
application scope variable that is loaded when the application starts.
I did have to work around a few issues in the Java source to get it
working properly with CF but there were not too many changes needed.
I have posted a very easy to follow step by step set of instructions on this posting http://www.bpurcell.org/blog/index.cfm?mode=entry&entry=1100 so that you can use to get GeoIP up and running on your site.
Although it has been quite a while since JRun 4.0 was released the next release is right around the corner. The JRun team has asked me to post the following message to find developers that are interested in test driving the next release of JRun.
The beta release of next version of JRun appserver, code named Cheetah, is available. Adobe JRun Team is inviting serious evaluators to give feedback on this beta release. Contact email@example.com to be included in the Beta program.
We believe Beta of JRun Cheetah is reasonably stable and reliable. And we plan to reward those who prove otherwise. We intend to give away fully functional JRun licenses to the users who report highest quality issues during the Beta.
What More ! We are throwing open a JRun Sample Apps Challenge. We invite the beta users to develop sample applications exploiting the new JRun Cheetah feature sets. The best apps developed by you will be rewarded, and on qualification, will be featured as part JRun releases in samples section.
Write Code, find Bugs ! Help us serve you better.
Regards,Vijayan Reddy,Adobe JRun Team.
Steven Erat pointed this link out to me regarding ColdFusion MX and JVM Tuning Links.http://www.pixl8.co.uk/index.cfm/pcms/site.resources.cfmxtuning/
Here are a few others:http://devnulled.com/content/2005/09/coldfusion-mx-tuning-and-clustering-roundup/
Free stack trace utilityhttp://www.seefusion.com/seestack/seestack.cfm
I recently was encountered with a problem where I needed to find what location a user was logging in from based on their IP. There were several reasons why such a system was needed that I highlight below.
Benefits of building such a system
I first started looking for third party solutions that could be accessed through a webservice but quickly arrived at IP2Location.com. IP2Location offers a downloadable CSV database that you can run on your own system. The cost is not significant depending on the amount of data you need. They offer IP-Country-Region-City-Latitude-Longitude-ZIPCode-ISP-Domain Database if you need that level of information. Anyways&on to the technical part.
The CSV format that is provided is simple to import into any database, I was using MS SQL server and imported the data using DTS. There are over 4 million rows in the table so it does not make sense to query directly against the data that was imported for performance reasons. Instead to make the queries very quick that return location data I split the main table out into 20 tables, this left 200,000 rows in each table and proved to scale much better. Since IP2Location offers regular updates I wanted to be able to handle the update process and splitting of the data with very little work on my part. To do that I created two stored procedures.
1. IP2RangeTable The first stored procedure looks at the main table containing 4 million records and divides it into 20 different ranges. Those ranges are then stored in a range table containing the start, end and table name that will store the data. 2. The second stored procedure uses the IP2RangeTable created previously and bulk inserts the range of data from the main table into the range tables. They were simply called range1 - range20.
Both of the stored procedures were written in such a way that the data could be broken out into X number of tables. It just takes the number of tables as a parameter. In this case I used 20. The further you break it out the better it will perform.
Next, I created a UDF in ColdFusion (could be done in a stored proc as well) that takes an IP as an argument. The IP is converted to an IP Number. IP Numbers are used in the database to store the IP2Location content. An example for conversion follows.
IP Number = 16777216*w + 65536*x + 256*y + z (1)whereIP Address = w.x.y.z
For example, if IP address is "22.214.171.124", then its IP Number "3401190660" is based on the formula (1).
IP Address = 22.214.171.124
So, w = 202, x = 186, y = 13 and z = 4
IP Number = 16777216*202 + 65536*186 + 256*13 + 4 = 3388997632 + 12189696 + 3328 + 4 = 3401190660 looks at the IP2Range
Once we have the IP number we need to find what table the record is stored in within the range1-rangeX tables. A query retrieves the values stored in IPRangeTable, from that data we can find the correct range table. Next a query is used against the range table to retrieve the location data.
This may sound complicated but it is really simple. Unlimately you could just query the original table that you imported from the CSV but I found the queries to take way to long and caused a lot of stress on the db server under load. Even with the right indexes in place. By breaking the data out into range tables you increase the scalablity exponentially.
Let me know if you have any other questions about this process and the benefits that the data provides.
Later I will explain how the event gateway was used to log this information for every user that logged into the site as a background process.
ISAPI Rewrite is an IIS ISAPI filter that I have recommended in the past in place of the JRun connector to cluster with a hardware load balancer in between the application server and web server. I outlined the usage in the following article. ISAPI Rewrite can also be used in conjunction with the JRun connector for several different useful features.
In order to use ISAPI Rewrite in conjunction with the connector it will need to be loaded as an ISAPI filter with a higher priority than the JRun connector. The ISAPI Rewrite filter examines requests before the JRun connector processes them so we can perform pre processing (rewriting, proxying, or blocking requests) among other things. I will provide a quick overview of the structure of the configuration files for ISAPI rewrite as well. After you install ISAPI Rewrite it installs the ISAPI Rewrite filter into IIS at the master level so that it affects all sites on that server. All configurations that you want to affect all sites will go into c:\Program Files\Helicon\ISAPI Rewrite\httpd.ini. ISAPI Rewrite also allows you to configure individual settings for each virtual site on the server. By placing a httpd.ini file in the webroot of a site the filter will process it as well, the master file will be processed first then the configuration in the virtual site.
Back to the many uses of ISAPI Rewrite, at least ones that I have discovered you may have more to contribute. If you have questions on the regular expressions I am using take a look at the ISAPI Rewrite documentation.
Blocking URL's
I have used this approach to secure web based administration tools including the ColdFusion administrator. If you wanted to prevent external access to the ColdFusion Administrator and allow access behind your firewall on a private IP you could do the following. Enable the JRun Webserver (default instance runs on port 8500) and access the administrator through http://internalIP:8500/CFIDE/administrator/index.cfm. With IIS configured to the JRun server you would still have external access to the administrator. This is where ISAPI Rewrite comes in. Within the httpd.ini file we can add the following rule that blocks external access to /CFIDE/administrator/
#Block ColdFusion AdministratorRewriteRule /CFIDE/administrator.* [F,I,O]
We could also block RDS using this same approach
#Block ColdFusion RDSRewriteRule /CFIDE/main/ide.cfm.* [F,I,O]
You can use this approach to block any URL all that is needed is a simple regular expression.
Rewriting SES (Search Engine Safe) URL's
The following rule will convert search engine safe (SES) URL to a standard URL so you don't have to handle them in your ColdFusion code.
#Convert SES URLs to standard URLs before passing them to ColdFusionRewriteRule (.*?\.cfm)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? $1(?2$2&:\?)$3=$4?5$5: [N,I]RewriteRule (.*?\.cfc)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? $1(?2$2&:\?)$3=$4?5$5: [N,I]
For example the following URL gets converted
http://host/page.cfm/var1/value1/var2/value2 -> http://host/page.cfm?var1=value1&var2=value2
Rewriting URL's for SEO optimization
I am not going to go into depth on search engine optimization (SEO) as I could spend a year just writing about it. One of the common things I have found is that a URL with keywords early after the hostname is rated better than including them in the query string at the end. You can create URL's that are easier to read as well and make it look like the pages the user is surfing is static content although it is generated on the fly. The following is not a real world example but I will say that I have used this approach with much success for data drill down applications to get search engines to rate the content highly. I don't want to give away any secrets though :-)
Let say we wanted a search engine to crawl our site for specific keyword that would be common search terms. If this were a dynamic ColdFusion page the URL's would look something like this.
With the following rule in httpd.ini we could rewrite the above URL
RewriteRule /search/(.*)\.htm /search.cfm\?keyword=$1 [I,O]
The following URL'shttp://host/search/keyword1.htm -> http://host/search.cfm?keyword=keyword1http://host/search/keyword2.htm -> http://host/search.cfm?keyword=keyword2gets rewritten to the URL's that we examined in the beginning, to ColdFusion it doesn't know the difference. We could provide a page with links to all of the common keywords and let the search engine walk through and index them. It may not seem apparent right away how this is such a cool thing but with a little imagination you can use this approach for a lot of things
Rewriting URL's to hide the file extension
This is similar to the example above except we are just hiding the actual file extension. For example we could rewrite .html requests to .cfm requests.
RewriteRule (.*)/(.*)\.html(.*) /$2.cfm [I]
Proxying Requests to Other Hosts
Lets say you had a single web server and host and multiple backend systems that you wanted to integrate through the same hostname. One system running ColdFusion, another system that is servlet based running on Tomcat. Of course you could integrate them but lets assume that is not an option. With J2EE applications you normally have a context root or prefix to every request. Lets assume that we have a context root of /myapp so all requests look like the following http://host/myapp/page.jsp. Lets also assume that this application is running on a different server other than the one ColdFusion or JRun is running on (192.168.1.50 on port 8080). The following rule would proxy requests from IIS to the server running our other application.
RewriteProxy (/.*myapp.*) http\://192.168.1.50\:8080$1 [I]
Proxying requests to remove the JRun connector
This is the approach I used in my article for JRun clustering with a hardware load balancer in between the webserver and application server. Since the standard protocol for the JRun connector is JRPP it does not work well through a hardware based load balancer. If you are using a context root in your ColdFusion application of / you will need to proxy by extension and can use the following rules. This will handle nearly every extension that CF needs and passes them to the JWS
#Rewrites to proxy requests back to the appserver level (CF)RewriteProxy (/.*\.cfm.*) http\://192.168.1.1\:8501$1 [I]RewriteProxy (/.*\.cfc.*) http\://192.168.1.1\:8501$1 [I]RewriteProxy (/.*\.jsp.*) http\://192.168.1.1\:8501$1 [I]RewriteProxy (/.*\.jws.*) http\://192.168.1.1\:8501$1 [I]RewriteProxy (/.*\.jst.*) http\://192.168.1.1\:8501$1 [I]RewriteProxy (/flashservices.*) http\://192.168.1.1\:8501$1 [I]RewriteProxy (/.*servlet.*) http\://192.168.1.1\:8501$1 [I]RewriteProxy (/.*CFIDE/GraphData.*) http\://192.168.1.1\:8501$1 [I]
One issue I ran into with this configuration is that a request for http://host will not use the default document in IIS of index.cfm so you can use the following rule to map http://host to http://host/index.cfm
#Fix final slash for /dirRewriteCond Host: (.*)RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [R]#Append index.cfm to any dirRewriteRule ((?!.+\.cfm).*/) $1index.cfm [I,O]
I would like to mention that I do not recommend removing the JRun connector unless you expect to handle supporting this configuration yourself. This approach is not directly supported by Macromedia but it does work as I have used it in the past. Don't expect Macromedia support to assist you with issues regarding this configuration.
It is worth mentioning that I am a big fan of Apache and you can do all of this with Apache and never have to buy a third party plug in. Apache has mod_rewrite and mod_proxy to accomplish the same tasks.
I have given this presentation several times in the past and wanted to share it with the general public. This explains how to measure performance, load test and tune your server to squeeze out every last drop of speed.
In this presentation I discuss my experience from lessons learned working with countless customers through the Macromedia professional services and support organizations. The tuning process is described in detail along with information specific to tuning ColdFusion application code and server settings. This includes the process of
The content is written for CFMX 6.1 as I haven't had time to adopt it to 7.0 but the concepts apply either way. You can view the PDF version of the presentation here.
I do a lot of testing with SSL and many times I don't want to configure an external web server. It seems like everytime I need to configure a JRun web server (JWS) for SSL I never have the steps available to do it. I have done testing with Flash Remoting, Flex and other various apps for SSL testing. The certificate is not a signed certificate but it will work for testing purposes. There are only two things you need - a keystore and a section in your jrun.xml telling JRun to use it....
The keystore:
To create your own keystore it is pretty simple just follow the instructions below. At a command prompt run the following line:
keytool -genkey -alias {name} -validity 9999 -keyalg RSA -keystore c:\my.keystore -keypass changeit -storepass changeit
Chose your -alias based on the hostname you will use SSL through. For instance, if you are accessing this locally use the alias localhost.
You will then be prompted for more information. At the first prompt enter the same name that you used in the command above. The rest is arbitrary.
This will create a keystore containing a certificate for your server.
One challenge I have always ran into with ColdFusion or JRun is that when the server hung on windows there was no easy way to take a thread dump. While jrun.exe is running as a service there is no direct way to send a signal to the JVM to signal a thread dump. Most of the time you have to start it from a console window and let it run there. When you do that though you run the risk of someone closing you user session and having the server die. It is much safer to run it as a service. This takes us back to the problem at hand.....if the server hangs how do I obtain a thread dump? Mike Collins recently pointed me in the direction of a utility that you could use to obtain a thread dump even while running as a service.
The tool is called StackTrace and it is a swing based utility the provides hooks into a java process running as a service. In order to run it you may need to download the latest 1.4 JDK and run the install, it should ask you during the install if you want to install the JRE to Internet Explorer. Check the box and proceed with the install and it will start when you invoke it from the website.
When you open the StackTrace utility you can browse the running java processes and it should look something like this.
If you have multiple servers running it may be difficult to identify which processID is mapped to a particular JRun server there is another utility that I use called Process Explorer from SysInternals. Once you download Process Explorer and open it, select Options > Highlight Services to see what you're running. Right-clicking on a service and selecting Properties gives you all the information you need on the resources it is using. The following screenshot provides an example of the JRun CFusion server. The process ID is 348 and we could choose this process in the StackTrace utility to obtain a thread dump.
One limitation that you need to be aware of is that you cannot use this utility from Terminal Services. This is not a limitation of the product it is a limitation of windows since the utility cannot attach to process running in a terminal window. You must instead use PC Anywhere or VNC to run the utility or run it directly at the console of the server.
I have not used this utility extensively so I do not know how stable it is nor do I directly endorse it. It was something cool that was pointed out to me so proceed at your own risk.
JRun 4 Updater 5 was released today. You can find a listing of the issues it addresses here. There are several fixes for the connector that you should check out, especially if you are using connector clustering.
Google launched the Beta of its long anticipated Desktop Search tool for Windows today. The application acts as your own personal Google Server and indexes the contents your system by file name, or in the case of select file formats, by the contents of the file. It runs on Windows XP and Windows 2000 (with Service Pack 3).
The free download indexes the full text of email created in Outlook or Outlook Express, Word documents, Excel spreadsheets, PowerPoint presentations, AOL Instant Messages, and caches the pages you view in Internet Explorer so you can revisit the page later "even if its live content has changed or you're offline."
The install is really simple and after you install it starts indexing. If you are working on your system then it will take a while to index. As soon as it realizes the machine is idle it starts churning away. After it indexes the data you are presented with a browser based interface much like the google we all know. Yes is it lightening fast, typing in JRun on my machine turned up 24,107 entries for files and 27,823 for web history, all that in .5 seconds. It looks through basically anything on your machine and indexes it. For free you can't beat this. it is on my short list of the best windows utilities I have ever used.
You can download it here.
Sorry for the inactivity on the blog in the last month but Flex has kept me quite busy lately.
I know that many developers use CFMX on their desktop or laptop for development. Changes in XP SP2 lock down the network functionality of JRun and CFMX. The following technote will walk you through the process of getting CFMX and JRun working properly after installing XP SP2.
Enabling ColdFusion MX with Windows XP SP2
I recently updated my article on configuring Installing and Configuring ColdFusion MX 6.1 Multiple Instances with IIS and Apache Virtual Hosts. There was a problem with the Apache configuration causing errors. There was an issue highlighted on Steven Erat's blog pointing out that the JRunConfig Apialloc setting must be set in the Virtual Host for second instance, and must be set to false. If not, one in every 4 or 5 requests will return an Apache Internal Server Error to the client with a 500 status code and the Apache error log will record a message such as:
[Thu Jun 24 15:09:33 2004] [notice] jrApache[1635] JRun will not accept request. Check JRun web server configuration and JRun mappings on JRun server.
The article can be found on macromedia.com. There was only one page updated that dealt with the apache configuration.
ColdFusion, JRun and Flex TechNotes are now available as RSS feeds at the following URLs:
I recently received the question below on Enterprise clustering with ColdFusion MX 6.1 and wanted to share my response.
"I was hoping you could point me in the right direction as far as which options you would recommend. I am setting up an enterprise environment for an application using CFMX J2EE and hardware load balancing. There will be 2 hardware load balancers, 2 webservers running Linux/Apache and 3 app servers running CFMX 6.1. In one of your articles you describe the situation where the hardware load balancers are used to balance the load for the web servers and the connectors are clustered using JRun's connector clustering. In another you describe a situation where there is a load balancer in front of the webservers and a load balancer in front of the app servers. I was hoping you could advise me on which of these are best suited for an enterprise level architecture, I was initially thinking of going for the first option but now I am condsidering the second. Also, from your experience, which HLB would you recommend?"
In the two articles in the links below I outline two different architectures. The first architecture has a hardware load balancer in front of the web servers and uses the JRun web server connector to handle failover and load balancing to the application servers. The second architecture uses a hardware load balancer both in front of the web server and between the web server and application server.
The first architecture is the easiest to setup and scales pretty well. The one pitfall I find is that the JRun connector clustering feature does not offer application awareness. Basically if your application hangs on a ColdFusion server the connector will continue sending requests to it. The most scalable and redundant option is to use multi-tier hardware. It is by far the most difficult to configure but it is worth it if you want to minimize downtime. The multi-tier hardware option gives you true application level failover and load balancing using probes and custom load balancing algorithms. You really only need a single F5 or CSS to accomplish this as well. You can set up a single BigIP to handle all traffic. Basically, traffic flows from the internet into the BigIP then it is sent to the pool of web servers, then proxied back to the BigIP then sent to the pool of ColdFusion servers. This is outlined in the multi-tier hardware article. That is how Frank and I configured our BigIP for the article mentioned below. If you have a second box you can put them in a master/slave setup so if the hardware device fails it will fail over. With a master/slave configuration and multiple web, application and db servers you should 99.9% uptime with your site.
As far as my hardware recomendations, I have primarily worked with only the Cisco CSS and F5 BigIP devices. The CSS is a great box and if you are already familiar with Cisco products it is a great fit. By far though my favorite is the F5 BigIP device. It does almost anything you want and is really easy to use either through the web based admin or command line. It also offers Icontrol which is a really powerful addition worth taking a look at.
Referenced Articles:
Frank DeRienzo and I have had a lot of requests for an article on integrating Microsoft NLB and ColdFusion/JRun clustering. Frank and I set this up in the lab a few months back and sat down to write up the steps. I have to be honest though. I am not a big fan of NLB as a clustering technology because of the lack of application level monitoring. Then again it is provided free with Windows 2003. There are less options now that Cluster CATS is being deprecated so NLB is one of the new software based options. Of course if you are looking for the best solution always go with hardware.
After the editing process is complete this article will be featured on the macromedia.com website. You can view the current article here. This process will work for ColdFusion MX 6.1 Enterprise or JRun 4. Feel free to post comments below.....
The latest revision of the article is now live on the macromedia.com website.
Macromedia just release the updated DataDirect JDBC version 3.3 drivers which resolve a large list of issues from earlier versions of the drivers. The new drivers provided in the TechNote should replace the 3.2 drivers shipped in ColdFusion MX 6.1 or the 3.1+ drivers.
For a full list of the issues and to download the drivers see the technote on the macromedia.com website.
The JRun Closed Connection error can cause a lot of frustration but if you understand how to debug and find the issue that is causing it, then you can resolve the problem quickly. The JRun Closed Connection error is caused by an issue that occurs in the JVM that causes the JVM to close the socket that is open from the external webserver connector (IIS, Apache, Iplanet) to JRun. The JVM problem can occur due to several different issues
The memory condition can occur in several different cases
Diagnosing the issue: In order to diagnose this issue there are several areas to start. By turning on metrics and JVM Verbose GC output you can monitor the memory and find out if memory utilization is the problem. In some cases the memory spikes very quickly and comes back down. A large recordset returned from a query can cause this behavior. The recordset will populate into memory and GC will clean it up quickly. If the size of the recordset pushes the heap beyond the max heap you will see a problem. Although you may not see an outOfMemory error everytime. Any connections that were in use during this spike will get a JRun connection closed error. If you look in the webserver connector logs you may find connection reset by peer errors as well.
Also review all of your logs for long running pages and errors in the Application.log. If you have a number of errors correct each issue also identify and fix any long running pages.
You can also provide a better user experience by modifying the page that displays when the error occurs. Without modifying the connector errorurl the user will get a white HTML page that says "JRun Connection Closed". You can replace this with an HTML page that just asks them to refresh or place javascript in the page that will refresh automatically. In either the httpd.conf or jrun.ini file modify the errorurl to point to an html page on the webroot of the web server.
For example with IIS you need to uncomment the #errorurl parameter and set it to the html pageerrorurl=/errorpage.html
While I have not covered every possible issue that can cause JRun Connection Closed errors I have at least provided some quick debugging steps. I will continue to update this entry as I find more approaches for debugging this problem.
Product support has been busy cranking out technotes during the month of March. Here is an up to day listing of the latest technotes from March 2004 for JRun and ColdFusion.
JRun updater 3 was released today. There are many bug fixes and updates to JRun in this release, you can see a full list of the updates and bug fixes here.
Important Update April 22 2004: If you downloaded the JRun U3 updater before April 14th then you should go back and download it again. There have been several fixes to the connector in this latest update. Specifically the fix that breaks the connector with CF deployed to /. The latest download can be found here.
The next major revision to the Java platform and language, version 1.5.0, is now available in beta.J2SE 1.5 has been developed under the Java Community Process as Java Specification Request (JSR) 176, which is led by Sun and an expert group of industry-recognized corporate and individual developers.
New features incorporated since the last "major" release - 1.4.0. - include:
There are several additions to the language, you can view a quick overview here. There is improved scalability and performance in this release and improved startup times. One of the changes that will help me most in my day to day job is the new Monitoring and Manageability. JMX is packaged with this release and the JVM Monitoring & Management API (JSR-174) specifies a comprehensive set of JVM internals that can be monitored from a running JVM. This information is accessed through JMX (JSR-003) MBeans and can also be accessed remotely using the JMX remote interface (JSR-160) and through industry standard SNMP tools. One of the most useful features is a low memory detector. JMX MBeans can notify registered listeners when the threshold is crossed, see javax.management and java.lang.management for details.
The release also contains a more powerful native profiling API called JVMTI. JVMTI is intended to cover the full range of native in-process tools access, which in addition to profiling, includes monitoring, debugging and a potentially a wide variety of other code analysis tools.
We are always having customers generate thread dumps when problems occur. It always needed to be done from the console before and that is akward. This release contains two new APIs, getStackTrace and Thread.getAllStackTraces provide this information programmatically. It is as simple as the following:
StackTraceElement e[]=Thread.currentThread().getStackTrace();
for (int i=0; i <e.length; i++) {
Also in the case of a JVM crash the Hotspot JVM includes a fatal error hander that can run a user-supplied script or program if the JVM aborts. A debug tool can also connect to a hung JVM or core file using the Hotspot JVM serviceability agent connector.
Many of these features more than likelyy will help improve JRun and ColdFusion in the future.
I have always found search engines interesting and based on some of the statistics I collect from referring pages I wrote some code that displays the latest referrals from the google search engine. I also like to see where my pages rank and what topics are most viewed on my site. I collect the data by using the cgi.HTTP_REFERER variable and storing it in a db. I parse out the google querystring using a UDF called GetGoogleKeywords from http://www.cflib.org.
You can view the realtime google keyword searches on this page.
2003 was the first year for my blog, the site launched on April 28th 2003 and the first few months traffic was very low. In fact for the month of May I only had 223 page views but by November I had over 55,000 page views. In total I had over 165,000 page views, the graph below shows how traffic grew throughout the year. Google pushed a lot of traffic my way with over 8,600 searches coming from google in 6 months. I also had over 1400 searches from yahoo as well.
Page Hit Statistics for Blog Postings in 2003
There are two other entries worth mentioning since they were posted late in the year. They have been hit pretty heavily since posting them
If there is any content that you would like to see in 2004 please post a comment below.
If you have clustered JRun or ColdFusion running on JRun then you may have ran into an issue with sticky sessions. This little technical tidbit may help you out and you will better understand how JRun handles sticky sessions. Many people think that the connector handles sticky sessions with a table of current sessions. Well, it is much simpler than that and here is how it works.
Sticky sessions hinge off of the jsessionid but not the entire id. When you create a JRun cluster the first time the server starts after it is added to a cluster a file called {cfusion}/servers/{servername}/SERVER-INF/connector.properties is created and the file contents look something like this:
#Sat Nov 22 07:36:43 EST 2003server.id=c830
The server.id is a 4 character string that is used to pre-pend on the front of every jsessionid that is created by that server. The connector has a listing of all server id's for all servers in a cluster and looks at the jsessionid and determines which server to route the request to. So a jsessionid created by the server with the id c830 will look something like this c830xxxxxxxxxxxxxxxx. By default sticky sessions are set to on even though the JRun documentation states otherwise. You can disable sticky sessions by modifying the jrun.xml with the following XML.
<service class="jrun.servlet.jrpp.JRunProxyService" name="ProxyService">............ <attribute name="StickySessions">false</attribute>............ </service>
You should really leave sticky sessions on unless you are not using the session scope at all. If you are using in-memory session replication you should leave sticky sessions on as well.
If you run into a problem with sticky sessions the first thing to look at is the users jsessionid, make sure it has the first four characters of a valid server.id. If it does not all requests with that session id will be round robined across all servers in the JRun cluster.
If you are looking for a JDBC driver to use in JRun or CFMX chances are you will find one here on the the Sun site. At the current time there are 197 drivers available in this listing.
In the past Microsoft rebranded the Data Direct JDBC driver for their own just like Macromedia does with ColdFusion MX. As of sometime in early 2003 they started building their own driver. As of Nov 2003 the SP2 version was available. Data Direct has a comparison data between the Microsoft driver and Data Direct drivers. This would apply to the Macromedia drivers as well since they brand the latest drivers from Data Direct.
Steps for configuring the Microsoft SQL 2000 driver:
Thanks to Sarge for assisting with the steps.
In some cases you may run into an issue with the packaged MySQL driver that comes packaged with ColdFusion. You have the option of configuring a third party driver or the latest driver from the mysql website. The MySQLwebsite contains several different drivers that you can use in different cases. For ColdFusionMX you are best off using the latest production ready JDBC driver (MySQL Connector/J). The driver is available for download at http://www.mysql.com/downloads/api-jdbc-stable.html
Steps for configuring the mySQL driver:
If you have configured CFHTTP or CFLDAP to communicate securly then you have worked with the command line KeyTool. If you are new to the command line tool then I suggest a GUI version called KeyTool GUI.
KeyTool GUI is a GUI version of the command-line keytool provided with the Java SDK. KeyTool GUI can be used to create JKS/JCEKS type keystores, generate and store keys and their associated X.509 certificates, generate CSRs, import and store trusted certificates and perform maintenance on keystore entries. A complete list of KeyTool GUI's functionality is included below:
You can download the tool here
Java Remote Rebugger Interface (JPDA) is another tool you can put in your toolbox when debugging CFMX and JRun. It is pretty simple to setup and get running with JRun/ColdFusionMX.
Described at http://java.sun.com/j2se/1.4.2/docs/guide/jpda/
Here are the steps:
CFMX is still running while you are attached.
Some useful jdb commands:
One of the problems I found is that the output dumps out to the console and it is hard to read. I found that it is much easier to direct the output to a file using the following approach
C:\j2sdk1.4.2_02\bin>jdb -attach javadebug > c:\jdblog.log
You still type your commands in the console but the output gets sent to the log. You can use wintail.exe or tail -f to follow the log.
Thanks to Tom Donovan for this Tip
Many times I visit customers for performance tuning engagements and I have a process that I go before I start load testing. This process allows me to really see what is happening inside the server. After running a few tests and monitoring this data I can make adjustments to JRun, CFMX, and the JVM. Unless you know what is going on you are really guessing with performance turning. These steps should get you started in the right direction. I plan on working on several other articles geared around load testing, performance tuning, and JVM optimization. Feel free to leave a comment if you have any suggestions for things you would like to learn more about.
You should also review the following presentation.
Use the following steps to configure CFMX 6.1 with the JRun install. It is a bit different with the standalone install.
Areas to monitor under load
Example Verbose Output: See Tuning Garbage Collection for details HeapPSYoungGen total 3584K, used 3583K [0x027f0000, 0x02bf0000, 0x060d0000)eden space 3072K, 99% used [0x27f0000,0x2aeffe8,0x2af0000)from space 512K, 100% used [0x2b70000,0x2bf0000,0x2bf0000)to space 512K, 0% used [0x2af0000,0x2af0000,0x2b70000)PSOldGen total 1408K, used 1287K [0x060d0000, 0x06230000, 0x227f0000)object space 1408K, 91% used [0x60d0000,0x6211d10,0x6230000)PSPermGen total 6528K, used 6489K [0x227f0000, 0x22e50000, 0x2a7f0000)object space 6528K, 99% used [0x227f0000,0x22e46470,0x22e50000)6.47463: [GC 4871K->2199K(5376K), 0.0118130 secs]Heap after GC invocations=7:
Under load the application server can appear to slow down and even in some cases hang. Using the data above and JVM Thread Dumps we can quickly diagnose and identify the problems. If a server stops responding to requests you will need to take a thread dump. You should also take one in a case where the thread count in metrics does not return to 0 after a load test ends.
The following document can assist in steps for obtaining the thread dump and diagnosing the results
There have been questions around the longevity of JRun as a J2EE application server and its future in the Macromedia product line. JRun serves as the core of ColdFusion and the Breeze product and continues to evolve on its own. Recently NEC signed a three year agreement to use JRun as an OEM product with their ActiveGlobe application server product line along with e-learning and StarOffic offerings. You can read more about the deal at the following site...
Between this and the recently renewed J2EE license agreement with Sun any questions around Macromedia's commitment to JRun should be answered.
When you add a new instance of JRun on windows you are forced to start it throught the command line. You can add the instance as a service so that it starts when the machine starts. To do this go to you C:\JRun4\bin directory and issue the following command and it will give you all of the options
C:\JRun4\bin\jrunsvc -?
Usage: jrunsvc-install <jrun-server> [service-name [service-display [service-description]]] [-<jrun-option>...]or -remove service-nameor -start service-nameor -startimeout <seconds> service-nameor -stop service-nameor -stoptimeout <seconds> service-nameor -status service-nameor -console service-name [-<jrun-option>...]
If I had a server named server1 I would issue the following command
c:\JRun4\bin\jrunsvc -install server1 "Macromedia JRun Server1" "Macromedia JRun Server1"
There is a little known trick when configuring multiple instances with ColdFusion and JRun. You can use different jvm.config files for each instance thereby giving you the flexibility to configure unique classpaths and memory/heap settings.
This technote explains how to do it.
If you have any questions whether or not you are on a supported version of Macromedia software you can see the following page: http://www.macromedia.com/support/programs/supported_products.html
Some applications claim to be platform independent, I will explain to you why I think CFMX 6.1 truly is. I will walk through the steps of deploying the java only install of CF onto windows, do some development work. Then jar CFMX and the CFML files up into an ear file and deploy right onto linux (or any other OS you choose). All without running any installer for CF on linux. Truly a write once deploy anywhere scenario. Pretty Cool eh?
The first step that needs to be taken is do download the java (jar based) install of CF. This install does not contain platform dependant files (verity, CFX, COM) but does include the core files of CFMX. When you go to http://www.macromedia.com/downloads download the AIX install of CFMX. It is not just for AIX it runs on any OS with a J2EE application server, the file extension for the file is .jar.
To run the installer enter the command java -jar coldfusion-macr-java.jar (this will bring up the GUI)
You can also run this installer in the console by adding the options i console. For a full listing of the options type -? In this example I will run in GUI and let the installer build an ear for me that I will deploy onto JRun. Here are the steps that I followed, while these steps apply to JRun they may be a little different based on the application server you are using.
At this point we are ready to start development. You also have the option of configuring CF to work with an external webserver. For this example I will create a few simple CF pages and setup a few datasources in the admin. The next step is to jar this entire install up and move it over to a Linux box and extract the ear into place.
Now in order to deploy the ColdFusion ear onto any OS/J2EE server combination of your choosing you will first need to jar it up.
I have JRun installed on RH 8.0 Linux and that is where I will move and deploy this file but the fact is you could deploy this file anywhere you wanted.
Using this approach you can build one ear file that could be deployed on any developers machine regardless of operating system. All you need is a J2EE server and JRun for developers is free. After doing development you can jar up CF and move it to another environment for testing then onto production for deployment. Let me know what you think about this approach.
Using the wsconfig.exe or wsconfig.jar utility that ships with JRun and CFMX you can configure external webservers to work with either product. This tool can either work perfect for you or cause you to beat your head against your desk. If you run into an issue where either the GUI hangs or through the command line the prompt never returns then you may find the information below helpful.
When wsconfig first runs it does a port scan from 2900-3000 to list any JRun servers that are running. In some cases it will hang when the port scan occurs. In the GUI this occurs when you click the add button. In the command line version it occurs when it searches for the servers and the prompt never returns. To test if this is the problem try the following command
wsconfig -host localhost -list (using the executable version)C:\CFusionMX\runtime\jre\bin\java -jar C:\CFusionMX\runtime\lib\wsconfig.jar -host localhost -list
This command should provide a listing of all running servers if it does not return to the command prompt and hangs then you can follow the procedure below
By narrowing the ports that are scanned by wsconfig you can prevent the hang. By default CFMX uses port 2901 for the jndi port. This port can be found in C:\CFusionMX\runtime\servers\default\SERVER-INF\jndi.properties under the entry java.naming.provider.url=localhost:2901. If you are running multiple instance of JRun then you can look in each servers SERVER-INF\jndi.properties file for the range of jndi ports to scan.
To reduce the ports that are scanned use the following java arguments-DWSConfig.PortScanStartPort=startport -DWSConfig.PortScanCount=portrange
If I had multiple instance and the JNDI ports started at 2901 and ended at 2905 then I would use the following command to list the jrun instances.
C:\JRun4\runtime\jre\bin\java -DWSConfig.PortScanStartPort=2901 -DWSConfig.PortScanCount=5 -jar C:\JRun4\lib\wsconfig.jar -host localhost -list
To run the GUI and only scan those ports enter the following command:C:\JRun4\runtime\jre\bin\java -DWSConfig.PortScanStartPort=2901 -DWSConfig.PortScanCount=5 -jar C:\JRun4\lib\wsconfig.jarModify the ports to your range of JNDI ports and the GUI should work without hanging.
Here are a few other articles that can help with wsconfig debugginghttp://www.macromedia.com/support/jrun/ts/documents/tn18287.htmhttp://www.macromedia.com/support/coldfusion/ts/documents/connector_install_faq.htm
I ran into a case where a customer wanted to start JRun as a different user on Solaris so I wrote a quick script that allows you to do this. Just put the following in a file, modify the RUNTIME_USER to a user of your choosing and the JRUN_DIR to your JRun install directory. Then modify default to whatever server you want. Upload the file to Solaris, change the permissions so it can execute and run it. I could make this more generic but time is short :-)
su $RUNTIME_USER -c "PATH=$PATH:$JRUN_DIR/bin; export PATH; $JRUN_DIR/bin/jrun -start -nohup default
If you want to switch the XML parser that JRun or CFMX uses it is pretty simple. Crimson is the default parser that is used and it is packaged with JRun. To use the Xerces parser rather than the Crimson parser follow the following procedure (thanks to Tom Donovan):
Eric Anderson wrote a great article on Tuning Performance in JRun. The article covers the following topics:
After deploying the J2EE version of ColdFusion MX to JRun you are stuck with a document root located in {jrun}/servers/{servername}/cufion/ What if you want this docroot to be located somewhere else? I will tell you exactly how to do it. If you are clustering you can have multiple servers share this docroot. Unfortunately, it's not entirely straightforward so follow along. To do this, we have to edit XML files to make all this happen. For each server instance, edit the jrun-web.xml file in {jrun.home}/servers/<instance>/cfusion/WEB-INF/ (assuming your context root is /cfusion). <virtual-mapping> <resource-path>/</resource-path> <system-path/> </virtual-mapping> <context-root>/cfusion</context-root> <compile>false</compile> <reload>false</reload> <uri-character-encoding>UTF-8</uri-character-encoding> <virtual-mapping> <resource-path>/*</resource-path> <system-path>{cfmx}/wwwroot</system-path> </virtual-mapping> <virtual-mapping> <resource-path>/WEB-INF/*</resource-path> <system-path>{jrun.home}/servers/<instance>/cfusion/WEB-INF</system-path> </virtual-mapping></jrun-web-app>
First, remove the section in red. {cfmx} should be replaced by the common document root you've chosen for CFMX, {jrun.home} should be replaced by the JRun install directory and <instance> should be replaced by the name of the server instance whose XML file you are editing.
If the section in black isn't present, you can add it although it represents the defaults. This removes the default document root mapping (in red) and adds two new mappings (in blue): a document root mapping to the shared document root a WEB-INF mapping to ensure each server instance can find its own private library files I typically add a third mapping (of /CFIDE/*) to the instance's CFIDE directory - to save having to copy the CF Administrator code from the CFMX for J2EE install out to the common document root.
A recent case study on the Macromedia website proves the value and worth of JRun with mission critical systems.
Kronos needed to deploy a turnkey native-web solution for workforce management without heavy expenses and support requirements. Kronos selected and embedded Macromedia JRun as the underlying Java application server for Workforce Timekeeper(tm), a complete solution for tracking employee attendance, producing accurate payroll, and monitoring labor activities.
Case Study Highlights:
Quote: "The best thing about this conversion to JRun - it was completely invisible to our customers. They don't need to know Java. They don't need to license, install, learn, and support a separate product. JRun just works silently and invisibly in the background. That's not a trivial matter because, with our application, if it doesn't work, our customers' employees don't get paid. It doesn't get much more mission-critical than that - you don't want to mess with other people's paychecks." - Ian Holland, Vice President of Architecture and Systems Engineering, Kronos Incorporated
Read More: http://dynamic.macromedia.com/bin/MM/showcase/scripts/showcase_cs_cover.jsp?Showcase_OID=954782
Any questions about the future of JRun can be answered with Macromedia's commitiment to Java with JRun recently renewing its J2EE licensing agreement with Sun Microsystems
MyThread aThread = new MyThread();
Thread.sleep(milliseconds, nanoseconds);
Thread aThread = Thread.currentThread();
int currentPriority;
currentPriority = aThread.getPriority();
aThread.setPriority( currentPriority + 1 );
A great document on how hyperthreading works in W2K - Interesting read..... http://www.microsoft.com/windows2000/docs/hyperthreading.doc
If you are a fan of Homesite then you have to check out this site. I stumbled upon it while searching on google.While a lot of the content is geared towards ASP development there are several color coding extensions for other languages that are not included in Homesite. The one that I was particularly interested in was color coding for Actionscript files. I am a fan of Flash, but not a fan of the built in actionscript editor. I would rather just include an actionscript file and work on it within Homesite.
There has been a lot of talk on the forums and other listservs about the new installation options with CFMX 6.1. There were three versions before (Prof, Enterprise, J2EE). There are now two versions (Standard and Enterprise), but now you get a lot more bang for your buck with Enterprise. The most significant change in Enterprise is that you get a full install of JRun. Here are the different options that are on the plate:
So with Enterprise you get a lot more than you did before. You get a full J2EE application server with the ability to do multiple instance and EJB's.
You can use Dreamweaver to generate proxy stubs for web services that's created in any language, and It is really easy to use!
There are two things you need to do before you try to generate proxy using Dreamweaver:
Dreamweaver uses older version of Axis, so the generated proxy stub will not work properly. You have to copy the webservices.jar from jrun to replace the one in Dreamweaver under Dreamweaver-install/Configuration/Classes. Note, Dreamweaver team is working on this issue.
You have to check if the web services and all its methods are working correctly. For example,
http://www.seshakiran.com/QuoteService/QuoteService.asmx?wsdl you can see the descriptor display fine. But if you check one of its method GetQoute by requesting
http://www.seshakiran.com/QuoteService/QuoteService.asmx/GetQuote you will see "The page cannot be displayed". Then you can't use the web services.
Note, you can always use wsdl2java -v -o <outputdirectory> <wsdl> to generate the proxy, but Dreamweaver can save you a lot of typing.
To generate proxy from Dreamweaver:
1. follow http://www.macromedia.com/support/dreamweaver/content/websrv_aspnet/websrv_aspnet04.html to create a jsp site and a jsp page.
Note, point the jsp site to one of your web app root, like C:\JRun4\servers\default\default-ear\default-war
2. open a new jsp page.
3. on the right-hand penal, go to application-->components, select "web services" from the drop-down list, then click the + button, then "add using WSDL"
4. put URL of WSDL file. You can use a WSDL file on your machine, or you can click the global icon (UUID browser) to get web services from existing site.
For this example, we choose "Weather - Temperature" from Xmethods site, the URL will be http://www.xmethods.net/sd/2001/TemperatureService.wsdl
select "Apache SOAP 3.0 (Axis)" as proxy generator. Then click "ok".
Dreamweaver will generate the proxy stubs for you. And you can see all the classes under Components panel.
There are 4 classes generated. Two of them will always be BeannameService and BeannameServiceLocator.
For our example, they are TemperatureService and TemperatureServiceLocator.
The other two file name will be different depend on how the web services is created. I will write a TechNote about this in more details.
5. Now all you need to do is to create a jsp client page. Dreamweaver allows you to drag and drop the methods you need from the Components panel into your jsp pages!
The following shows what you need for the proxy client jsp page :
First, you need to get a stub factory from the Locator. For this you always use the class name end with Locator:
BeanServiceLocator stubFactory = new BeanServiceLocator(); (for our example, Bean is Temperature)
Second, you get a stub (Instantiate a proxy) by calling stub=stubFactory.getServicename(); Here the Servicename is different depend on how the web services is created:
for .net: getBeanServiceSoap();
for Perl/SOAPLite: getBeanPort();
for java (or ColdFusion), GLUE : getBean() or getServicename(); here Servicename is the service name you defined in server-config.wsdd
I will put more details in my techNote to help understand and determine what the Servicename you should use
Third, you Invoke the web service's method(s): output = stub.getMothed();
for our example, the jsp page will be (proxy_temp.jsp)
<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<%@page import="org.apache.axis.client.Call,org.apache.axis.client.Service,org.apache.axis.encoding.XMLType" %>
net.xmethods.www.sd.TemperatureService_wsdl.TemperatureServiceLocator aTemperatureServiceLocator = new net.xmethods.www.sd.TemperatureService_wsdl.TemperatureServiceLocator();
net.xmethods.www.sd.TemperatureService_wsdl.TemperaturePortType aTemperaturePort = aTemperatureServiceLocator.getTemperaturePort();
float aNewton = aTemperaturePort.getTemp("02466");
float aSF = aTemperaturePort.getTemp("94103");
The temperature in Newton today is <%= aNewton %> <br>
The temperature in San Francisco today is <%= aSF %> <br>
Press ctrl+shift+r to compile the jsp page and see if there is any error.
6. invoke the proxy_temp.jsp via http://localhost:8100/proxy_temp.jsp, You will see display like:
The temperature in Newton today is 61.0The temperature in San Francisco today is 66.0
The database pooling mechanism in JRun 4 is based off of Poolman 2.0. In some cases the Poolman documentation can provide some insight on undocumented JRun pooling features:
PoolMan Users Guide
PoolMan XML Quick Reference
There are times when it may be necessary to recompile the Apache connector for a specific hardware platform or operating system. The wsconfig.jar file now includes a file called ApacheModule.zip, which contains the source code and instructions for rebuilding the connector. The instructions are posted in this technote on macromedia.com.
When ColdFusion MX (also applies to JRun) is used with Microsoft IIS, Windows NT Authentication, and NTFS file permissions - IIS must be configured to check the file permissions before passing the request to ColdFusion MX and all files must be placed in the webroot of IIS. This is outlined in two technotes on the macromedia.com website. Many admins have found that after Windows restarts pages no longer get authenticated. I found a forum posting that outlines some additional steps.
Follow the steps in the following article from the macromedia.com websitehttp://www.macromedia.com/support/coldfusion/ts/documents/nt_auth_iis.htm
The following additional steps were found on a macromedia.com forum posting.
Ok, now for the steps to make the W3 Publishing Service dependent on theColdFusion MX Application Server service. It's pretty straightforward:
1) Go to "Start" menu --> "Run...". This should open a small window.2) In the textbox labeled "Open:", type "regedt32" (without the quotes).This will open the registry editor.3) Look for the window labeled "HKEY_LOCAL_MACHINE on Local Machine". Clickon it to make it active.4) Double click the "SYSTEM" directory to expand it.5) Double click the "CurrentControlSet" directory to expand it.6) Double click the "Services" directory to expand it.7) Highlight (select) the directory called "W3SVC". This is the W3Publishing Service. You should see settings appear in the right pane of thewindow.8) In the right pane look for a line called "DependOnService". Double clickthat line. It should bring up a text area. There should already be a line inthe text area that reads "IISADMIN". Leave that alone. Go to a new line inthe text area and type "ColdFusion MX Application Server" (without thequotes). You must type this exactly, otherwise it will not work! Your textarea should now read "IISADMIN" on the first line, and "ColdFusion MXApplication Server" on the second line. Click "OK".9) Close the Registry Editor.10) Restart your computer (the web server).
This will now make the W3 Publishing Service dependent on both: the IISADMIN service, and the ColdFusion MX Application Server service. When the operating systems boots, the W3 Publishing service will not start until AFTER each of the other two services have successfully started. This willsolve your ColdFusion MX/Intregrated Windows Authentication problem, and let you comfortably rest at 3 a.m., knowing that if your server ever has to be rebooted, all your web applications will be secure.
If you run into problems installing JRun 3.1 with Red Hat 7.x+ the following technotes may help
The JRun4 Updater2 final release is now available for production use, providing a number of important bug fixes and new features designed to improve performance and stability in a high volume production environment. Please review this article for a summary of these new features and links to additional Updater2 resources.
The JRun4 Updater2 release includes the following enhancements:
Dowload Here
If you want to enable the primitive run-time tracing in JRun it is very simple, open up the /bin/jvm.config file and modify the java.args entry to include the tracing.
Example to trace all: java.args=-Dtrace.all -Xms32m -Xmx128m
Example to trace servlet container and clustering:java.args=-Dtrace.servlet -Dtrace.clusterjrpp -Xms32m -Xmx128m
All of the tracing options can be found below, each entry is after public static final boolean {option}
/** * Primitive run-time tracing class * * Code as follows: * if (Trace.foo) * Trace.trace("trace msg"...); * * Enable as follows: * java -Dtrace.foo -Dtrace.foo2 -Dtrace.foo3 or -Dtrace.all * * Special flags: * -Dtrace.all -- enables all tracing * -Dtrace.timeStamp -- timeStamp all output lines * -Dtrace.caller -- print the Class:method caller * -Dtrace.stackLines=10 -- print 10 stack lines * -Dtrace.stackPrefix=java.lang -- print the stack up to java.lang * * Add new xxx members as desired. */
public class Trace { public static final boolean all = (System.getProperty("trace.all") != null); // Use Trace.debug for temporary stuff. For a more permanent trace add a new line below public static final boolean debug = all || (System.getProperty("trace.debug") != null); public static final boolean deploy = all || (System.getProperty("trace.deploy") != null); public static final boolean ejb = all || (System.getProperty("trace.ejb") != null); public static final boolean persistence = all || (System.getProperty("trace.persistence") != null); public static final boolean invoke = all || (System.getProperty("trace.invoke") != null); public static final boolean security = all || (System.getProperty("trace.security") != null); public static final boolean jndi = all || (System.getProperty("trace.jndi") != null); public static final boolean servlet = all || (System.getProperty("trace.servlet") != null); public static final boolean websecurity = all || (System.getProperty("trace.websecurity") != null); public static final boolean classloader = all || (System.getProperty("trace.classloader") != null); public static final boolean jdbc = all || (System.getProperty("trace.jdbc") != null); public static final boolean mdb = all || (System.getProperty("trace.mdb") != null); public static final boolean mdbinvoke = all || mdb || (System.getProperty("trace.mdbinvoke") != null); public static final boolean mdbdeploy = all || mdb || (System.getProperty("trace.mdbdeploy") != null); public static final boolean jms = all || (System.getProperty("trace.jms") != null); public static final boolean jmscore = all || jms || (System.getProperty("trace.jmscore") != null); public static final boolean jmsj2ee = all || jms || (System.getProperty("trace.jmsj2ee") != null); public static final boolean jmswrapper = all || jmsj2ee || (System.getProperty("trace.jmswrapper") != null); public static final boolean jmsadapter = all || jmsj2ee || (System.getProperty("trace.jmsadapter") != null); public static final boolean jmssecurity = all || jmsj2ee || (System.getProperty("trace.jmssecurity") != null); public static final boolean jmsxa = all || jmsj2ee || jmswrapper || (System.getProperty("trace.jmsxa") != null); public static final boolean cluster = all ||debug || (System.getProperty("trace.cluster") != null); public static final boolean iiop = all | (System.getProperty("trace.iiop") != null); public static final boolean ci = all | (System.getProperty("trace.ci") != null); public static final boolean xml = all | (System.getProperty("trace.xml") != null); public static final boolean appclient = all | (System.getProperty("trace.appclient") != null); public static final boolean clustertrn = all | (System.getProperty("trace.clustertrn") != null); public static final boolean jca = all | (System.getProperty("trace.jca") != null); public static final boolean jmsgc = jmscore | (System.getProperty("trace.jmsgc") != null); public static final boolean jmscc = jmscore | (System.getProperty("trace.jmscc") != null); public static final boolean clusterjrpp = all || (System.getProperty("trace.clusterjrpp") != null); public static final boolean usrtrn = all | (System.getProperty("trace.usrtrn") != null); public static final boolean trn = all | (System.getProperty("trace.trn") != null);
Macromedia Flash, JRun win SIIA Codie AwardsWednesday May 7, 7:31 am ET
"Macromedia is honored to have been chosen for these Codie Awards, especially considering the award denotes recognition by our peers in the software industry," said Norm Meyrowitz, president of products, Macromedia. "Macromedia Flash Communication Server MX has especially been on a winning streak lately and is really carving a niche for itself."
In addition to its recent Codie Award, Macromedia Flash Communication Server MX was also given an honorable mention as Best Streaming New Software Product in the 2003 Streaming Magazine's Reader's Choice Awards. The server also landed Macromedia with the Reader's Choice award for Best Up and Coming Streaming Company.
Macromedia ColdFusion® MX also nabbed a Productivity Award in the Business Integration and Data Tools category at the 13th Annual Jolt Product Excellence and Productivity Awards, given by the editors of Software Development magazine.
Session Replication App
Author: Brandon Purcell
Click to Download
Description: This application uses session replication
inside the JRun servlet container
Usage: Testing session replication, connector load balancing
and failover
note: Uses <buddy-name>*</buddy-name> for replication to
all members in the cluster


text:
Town Square
Please go to school board meeting tonight to support CSR
Original post made by CSR, Another Pleasanton neighborhood, on May 28, 2013
Parents have started a grassroots effort to help fund lower class sizes now for grades 2, K and 3 and will ask the school board to discuss this properly at their next meeting. The school board indicated that last year not enough parents showed up to say they cared about CSR (despite the PPIE survey that indicated this was the top issue of concern to elementary parents), so show your interest tonight, Tuesday, if this is something you value.
Do not accept that it is in the budget to reduce class sizes from 30-1 to 20-1 for next year - the rules are changing and it is very likely that this will be dropped or implemented VERY slowly - current students don't stand a chance.
If you have not pledged to support CSR, please consider doing so. No money is due now, it will only become due if the school board agrees to reduce the class sizes. It is important that anyone who cares and can afford even a small contribution does so, as the funding is very tight and we need to do what we can to support our kids' education as the politicians are likely to let us down on this important topic. This is not one that only the usual 10-20% can do - it will take more than that.
So please go to the meeting tonight and consider pledging on Web Link if this is something you would like to support. There is a list of supporters and contact people online.
a resident of Vintage Hills
on May 28, 2013 at 4:31 pm
Kathleen Ruegsegger is a registered user.
I have a concern that the community's parents are splitting themselves up to fund CSR (or any other classroom wish list item). Kindergarden and first grade parents might support second grade CSR because they may benefit, but what about third grade parents or middle school or high school? Is every grade level who might benefit from X Y or Z going to have to lobby the board? Can the board say yes to some and not to others? Does this process recur the following year(s)? I certainly don't wish to discourage anyone; I just see the energy that will be expended and wonder whether a more effective approach can be made collectively.
a resident of Another Pleasanton neighborhood
on May 28, 2013 at 5:40 pm
The school community at large has already supported 1st grade CSR. The grades have to come back in a certain order. We are all banding together, it's a technicality which order the grades come back in.
Yes, we do have to lobby the board, because they seem to think that if we're not there, we don't care. We were told there was little point in going to the board meeting last year because they said clearly that bringing it back was not an option. Apparently, from comments made last board meeting, they still wanted us to beg for it. Why, I don't know.
a resident of Vintage Hills
on May 28, 2013 at 6:08 pm
Kathleen Ruegsegger is a registered user.
Thanks CSR. I do know the state requirements, but if K-3 is the goal, and the district has $X for the goal; the community then needs to raise $Y; and if only enough for $Z is raised, then only two or three grades, in the order required, get CSR. One fundraising effort and a common goal with the district.
I also understand lobbying is necessary. It seems unfortunate it has to be done one grade at a time. I hope you are successful!
a resident of Amador Valley High School
on May 29, 2013 at 4:52 am
CSR is a good thing and I support it.
BUT PPIE money going to CSR I do not support.
PPIE you will not be receiving my annual donation. Many people I have spoke with feel we were lie to and that PPIE was hijacked my CSR.
CSR should be funded but not by lies.
a resident of Birdland
on May 29, 2013 at 9:24 am
I'd be happy if our elementary schools could just have a full-day schedule. 8-2? 8:30-2? Something a little more reasonable then what we have now.

subset: commoncrawl


text:
In most of the world, scheduling a concert for 6 a.m. would be eccentric, to say the least. Add that the venue is a cliff-side grotto reachable only by a half-hour hike, and it sounds almost perverse. Not so on Capri, the idyllic island in Italy's Gulf of Naples whose natural beauty has drawn gatherings since Roman times. As tuxedoed waiters closed down the last cafés at 5:30 a.m., I accompanied an elderly Italian couple dressed as if for the opera through dark, empty plazas in the island's town center, also called Capri. We came to a cobbled footpath that led to the grotto, turned on our flashlights and made our way past moonlit lemon groves and gated villas. It was a velvety summer night, and my new companions, Franco and Mariella Pisa, told me they divided their time between Naples and Capri, much as their parents and grandparents had done before them. "Capri has changed on the surface," Mariella said, "but its essence remains the same."
From This Story
Related Content
Finally, after negotiating a series of steep stone steps down the side of a cliff, we arrived at the candlelit Matermània Grotto, a cavern half open to the night sky, where traces of an ancient Roman shrine are still visible. In antiquity, this had been a nymphaeum, or shrine to water nymphs, decorated with marble statues and glass mosaics, artificial pools and seashells. Legend holds that the grotto was also a place for the worship of Cybele, the pagan goddess of the earth, known as Magna Mater, or Great Mother, who gave it its name. "The Romans loved natural energy," Filippo Barattolo, director of Capri's Ignazio Cerio Museum and Library, would tell me later. "They regarded the island's grottoes as sacred places where they could commune with the divine." Now, as candlelight danced on cavern walls, other immaculately dressed Italians—bronzed gents in white silk trousers, women in sequined dresses, some carrying tiny canines—took their seats on rocks around its entrance. The group swelled to about 100.
The starlit sky had just begun to lighten when the sound of bells tinkled through the grotto and a lone cellist launched into a discordant experimental piece. In the predawn light, I could see that the cave opened out upon the jagged eastern coastline, where sheer cliffs and spires plunge into the Mediterranean—"galloping rocks" that provide "exclusive balconies for elegant suicides," the Italian futurist poet F. T. Marinetti wrote in the 1920s. No wonder the ancients regarded Capri as the domain of the sirens, those Homeric creatures who lured sailors to their demise with seductive songs. As the sun began to rise, the music shifted to a lyrical nocturne, and hundreds of birds began to chatter in the surrounding trees. The guests were then offered a suitably pagan repast of fresh green grapes, bread and milk.
In the early 1900s, expatriate bohemians gathered in the Matermània Grotto for faux-pagan celebrations of a more bacchanalian nature. One in particular has gone down in legend. In 1910, Baron Jacques d'Adelswärd-Fersen, an opium-addicted French poet (whose neo-Classical villa attracts tourists today), staged a human sacrifice to the ancient Roman sun god Mithras. While a crowd of friends in Roman tunics held torches, burned incense and sang hymns, Fersen, dressed as Caesar, pretended to plunge a dagger into the chest of his naked lover, Nino Cesarini, cutting him slightly. A young shepherdess who witnessed the pageant told a local priest about it. In the ensuing scandal, Fersen was forced to leave the island—albeit briefly—one of the few cases on record of Capresi being outraged by anything.
For over 2,000 years, this speck in the Gulf of Naples, only four miles long and two miles wide, has been known for its dazzling beauty and extreme tolerance. Writers, artists and musicians have long been drawn to its shores. "Capri has always existed as un mondo a parte, a world apart," said Ausilia Veneruso, the organizer of the Matermània Grotto event and, with her husband, Riccardo Esposito, owner of three bookshops and a publishing house that specializes in writings about Capri. "It is the hermaphrodite island, a collision of mountains and sea, where opposites thrive and every political ideology and sexual preference finds a place," she told me. "By the 19th century, our little island was for artists like the center of the world: Europe had two arts capitals, Paris and Capri."
Capri's cosmopolitan past remains part of its allure. "For centuries, Capri was shaped by foreign travelers," said Sara Oliviera, vice president of the Friends of the Certosa (monastery) of Capri. "The island was a crossroads of international culture. Now we want to revive those connections."
The island's first tourists were the Romans, who were attracted by its ravishing scenery and its aura of refinement as a former Greek colony. During the second century B.C., the entire Bay of Naples blossomed into a seaside resort. Roman aristocrats, including the emperor Augustus himself, would travel by horseback or wagon to Sorrento, then sail the three miles to Capri to escape the summer heat and to indulge in otium, or educated leisure—working out, swimming, dining and discussing philosophy. In this Hamptons of antiquity, Roman girls cavorted on the pebbly beach in prototype bikinis.
But the figure who most thoroughly shaped Capri's fate was Augustus' successor, the emperor Tiberius. In A.D. 27, at the age of 69, Tiberius moved to Capri to govern the enormous Roman empire from his dozen villas here. For more than a decade, according to his biographer, Suetonius, Tiberius wallowed in hedonism—decorating his mountaintop Villa Jovis, or Villa of Jupiter, with pornographic paintings and statues, staging orgies with young boys and girls and torturing his enemies. (The ruins of the villa still exist; its tunnels, arches and broken cisterns crown the island's eastern cliffs, from which the emperor was said to have tossed those who displeased him to their deaths.) In recent years, historians have discounted Suetonius' depiction, which was written some eight decades after Tiberius' death. Some say the emperor was actually a recluse who preferred stargazing to pederasty. "The trouble with all Suetonius' gossip about Tiberius is that it's just that: gossip," says Paul Cartledge, a professor of Greek culture at Cambridge University. "He could have been a shy, retiring student of astrology. But he was possibly also a sexual deviant. We'll never know for sure."
Yet the image of Tiberius' indulgences became a fixture of Capri's reputation, repeated as gospel and perpetuated in Robert Graves' historical novel I, Claudius and in the lurid 1979 film Caligula, starring a haggard-looking Peter O'Toole as the imperious reprobate. But if Tiberius lent the island a dreadful notoriety, he also guaranteed its popularity. Its divine beauty would forever be inseparable from its reputation as a sensual playground, where the pursuit of pleasure could be indulged far from prying eyes.
After the collapse of the Western Roman Empire in A.D. 476, Capri entered a lonely period. Throughout the Middle Ages, Arabs and corsairs routinely raided the island. Capri began to regain its popularity in the 1750s, when excavations in Pompeii and Herculaneum, the Roman towns buried by an eruption of Mount Vesuvius in A.D. 79, made Naples a key stop on the grand tour. Travelers, including the Marquis de Sade, in 1776, added Capri to their itineraries. (He set a part of his licentious novel Juliette at the Villa Jovis.)


text:
Making lives better through lasting personalized gifts.
Helping businesses grow and achieve their goals.
Done right, on time. Guaranteed.
Accurate, Fast, Friendly, and Flexible.
We take your privacy seriously, and don't share your email address; it is used only for the newsletter
Home Leather Products Leather Sheet 3x4
Price: $16.00 to $5.61
$16.00 each
Discount Pricing (call for quote on higher quantities)
Leather Sheets are available in a variety of sizes and are perfect for that special project. The custom rectangle leather sheet is die cut from premium tanned leather. The light tan color of the leather laser engraves a rich brown color with your photos, logos and text. Available in other sizes as well. Works great for custom signage!
Our leather sheets are made from hand picked hides and have a smooth top surface for optimum engraving results. Small variations in the finish provide a natural look.
Related Products
Toll free: 1-877-365-2737
Local: 303-920-0879
11811 Upham St, Unit 2
Broomfield, CO 80020 USA
Copyright © Personalized Lazer Designs, LLC All Rights Reserved
Frequently Asked Questions
Quick Help
Live Chat
Contact Us
More details on our Contact page


text:
Discussion in 'Fan Zone' started by MrMom, Jan 16, 2013.
I absolutely love this move.
I will, I will find a way to use them either way.
Broaddus hinted today that he is.
He did his keep an eye on Barry bit.
That usually means he has been told he is coming.
It makes all the sense in the world.
Kiffin-marinelli-Barry-Henderson is a good group.
I wonder if they keep the quality control coaches.
Oh, please! Mike fisher! Keep that "dream team" stuff for the eagles.
I'm guessing Scottie Hazelton is the quality control coach, since it was rumored he was already hired by Kiffin. It's a pretty nice foot in the door job for the NFL. Several former Kiffin quality control coaches around the NFL in high places.
this i can live with
It will be nice having them at the east/west game to get a look at the defensive players in this draft and how they see these prospects fitting into their defensive scheme
Replacing Ben Bloom? Makes sense.
Nope. Not at all. We were following Bill Parcells, who had ALWAYS been a 3-4 guy.
Glenn smith just confirmed rod marinelli has been hired and is the dl coach.
Nice. Any other snippets of info from Stretch?
Good stuff.
Not yet.
They are talking about it now.
I read that Ratliff would be a 3 tech or a 1 tech from different sources.
I won't credit myself with anything more than a layman's eye for understanding what Ratliff's position would be, but to me he looks much more like a 3 technique (at least a healthy Ratliff would).
In fact in all the years he was playing NT, it seemed that he would really shine as a 3 tech in a 4-3. 1tech? I just don't see it. I must be missing something.
Who is Glenn Smith and where is he reporting this?
I am super excited that this is happening. A great hire!
Former scout.
Part of gallo ways show on espn 103.3
Look who he first worked for here... I'm sure that's why he's so juiced in.
He's good, though. Much better than Broaddus was IMO. He gets into the details far better and really knows his stuff.


text:
The Pharmaceutical Society of Japan (PSJ) has been devoted to promoting the pharmaceutical sciences since its establishment in 1880. The PSJ launched its official journal, the Yakugaku Zasshi, in Japanese in 1881, and the English-language Pharmaceutical Bulletin in 1953. The Pharmaceutical Bulletin continued as the Chemical & Pharmaceutical Bulletin from 1958 through 2011. The Journal of Pharmacobio-Dynamics, which started publication in 1978, was succeeded by the Biological & Pharmaceutical Bulletin from 1993 through 2011. The Journal of Health Science (JHS) originated from the Kousyuu-Eisei Nenpou (Annual reports of the Public Health Division of the Pharmaceutical Society of Japan) in 1953 and was succeeded by the JHS (19992011) through Eiseikagaku (Journal of Hygienic Chemistry; Japanese Journal of Toxicology and Environmental Health) (19561998). The PSJ has decided to reorganize its journal systems to provide research-related information more efficiently and to showcase the latest achievements in the pharmaceutical sciences, which continue to expand rapidly in scope and scale. Under a unified editorial system, PSJ journals started to be published from January 2012 as the new Biological and Pharmaceutical Bulletin (BPB) and Chemical and Pharmaceutical Bulletin (CPB), both in English, with Yakugaku Zasshi as a Japanese-language journal. Most of the fields and subjects published previously in the JHS continue in the BPB, and some are taken over by the CPB.
The BPB covers various biological topics in the pharmaceutical and health sciences fields including scientific research from basic to clinical studies, while CPB deals with a wide range of chemical topics in the pharmaceutical and health sciences fields related to biologically active compounds, natural products, and medicines. For details of their respective scopes, please refer to the submission topic categories below.
1. Organic chemistry 2. Medicinal chemistry 3. Chemical biology 4. In silico science 5. Analytical chemistry 6. Physical chemistry
7. Inorganic chemistry 8. Physical pharmacy 9. Pharmaceutical engineering 10. Pharmacognosy 11. Natural product chemistry 12. Epidemiology 13. Health statistics 14. Toxicology 15. Hygiene 16. Forensic science 17. Environmental science 18. Regulatory science 19. Biochemistry 20. Molecular and cellular biology 21. Microbiology 22. Pharmacology 23. Biopharmacy and pharmacokinetics 24. Biogenetic engineering 25. Clinical pharmacy 26. Clinical-bioanalytical chemistry 27. Pharmaceutical care and science 28. Pharmaceutical education 29. Miscellaneous


text:
Attending Washburn is a tradition for many, but few have the ties Justin Blumreich's family has to the university.
Blumreich, bba '05, bsn '11, one of 51 recipients of a Washburn Alumni Association scholarship for the 2011-12 academic year, was recognized by president Jerry Farley as the school's only fifth-generation graduate.
"It's rare to be able to continue a tradition that goes back as long as this," Blumreich said. "There are often times when I'm reminded of my legacy when someone tells me they were taught by my grandpa or they know my family through another connection at Washburn. I'm very proud to continue the tradition at Washburn."
Blumreich's great-great uncles Walter, Festus and Richard Foster and great-great grandfather Frank Foster attended Washburn College in the 1870s, and his great grandmother Dorothy (Foster) Fuller graduated from the college in 1923.
Other family members with ties to Washburn include grandmother Mary (Fuller) Muilenburg (b music '56), grandfather James Van Slyke (a longtime professor here), father Craig Blumreich (bba '76, jd '79, currently an adjunct instructor at the school of business) and mother Dorothy (Van Slyke) Iliff ( b ed '81).
"It's a good school, and we've always felt pride in Washburn," Muilenburg said. "We've appreciated that one-on-one relationship you get with the faculty and the education we've received."
The deadline for applying for an Alumni Association scholarship for 2013-14 is Friday. Apply now. Washburn's financial aid priority deadline is Feb. 15 every year.
This story adapted from the Ichabod, a publication of the Washburn University Alumni Association.


text:
Jamestown Savings Bank Ice Arena
Jamestown Savings Bank Ice Arena plays hosts to hundreds of events per year. With two NHL regulation hockey rinks, it's a great place to host a tournament! Rink A features a 2,000 seat Arena Bowl for hockey and sporting events, while seating over 3,100 for shows and concerts! A 245 person Veranda Room overlooks the main arena and serves as Hospitality Suites for athletic events. A Community Room, Exercise Room, Education Lab and Ballet Room round off just some of the facilities available under one roof! Enjoy our Outdoor Patio and 1/8 mile indoor walking track!
The Jamestown Savings Ice arena is open year-round and is available for public skating and figure skating.
bottom nav
custom joomla template by IrisLines


text:
Latest Weather Blog
Costco apologizes for California bible flap
SIMI VALLEY, Calif.- A Costco store in Southern California drew some unwanted attention this week after labeling some of its Bibles as fiction.
The Los Angeles Times reports that Discovery Church pastor Caleb Kaltenbach recently came across the Bibles with "Fiction" written on the price tag while shopping for a gift at a Costco store in Simi Valley.
He took a photo and posted it on social media with the comment: "Costco has Bibles for sale under the genre of FICTION Hmmmm..."
Costco has since apologized, saying in a statement a distributor mislabeled a small percentage of Bibles before they were sent to the store.
The company said it is correcting the mistake for future distribution.
IMAGE COURTESY: Wikimedia Commons


text:
Metrodial Dazzles as Five Diamond Monitoring Center
This year's CSAA Five Diamond Marketing Marvel award-winner was founded more than 35 years ago, but its approach to business and technology is pure 2013 — with an eye on what's next. See how Metrodial's professionalism and progressivity are dialing the firm into greater success.
By Scott Goldfine · October 31, 2013
EPS Excels Marketing 5-Diamond Excellence
Grand Rapids, Mich.-headquartered Engineered Protection Systems (EPS), runner-up for this year's CSAA Five Diamond Marketing Marvel honor, has been a member of the Central Station Alarm Association since 1979. Its 205 employees and six Michigan-based locations provide burglary, fire, video surveillance, access control, integration systems and monitoring services to more than 18,600 residential and commercial accounts throughout the Midwest.
"Five-Diamond status is important because we see value in the importance of all of our operators understanding industry knowledge, and we strive to be the very best at alarm monitoring," says EPS Director of Business Development David Hood. "With this being a competitive market, this certification gives us an edge above others. We understand the value of using the CSAA Five-Diamond certification to our advantage."
EPS promotes its Five-Diamond designation on its Web site, in brochures, on the walls of its UL-Listed and FM-approved monitoring center, as well in a slick booklet it distributes featuring the firm's "Eleven Reasons to Consider EPS." Mentions and links are also visible in Facebook posts, Twitter communications and a quarterly newsletter.
"Noting our highly certified central station is a necessary supplement to all marketing materials. We never stray away from displaying our certification," says Hood. "Any brochure or print material larger than a single page will address this. These brochures are usually the first impact we can make on a prospective customer. And our EPS customer tours are one of the best ways we show off the central station, our local mission, and connect the dots between a prospect and our services. It's a powerful experience many do not provide."
New hires are introduced to the certification and EPS employees have the CSAA Five-Diamond logo in their E-mail signatures.
"I have come to understand the importance of holding to industry standards and surpassing the competition in every way possible," says EPS Marketing Assistant Jeremy Schellie. "The Five-Diamond certification only furthers that effort."
Management reports receiving positive notice and response from customers, emergency personnel, AHJs and insurance carriers regarding the accreditation.
"EPS has been one of the best companies that we dealt with and every dispatcher would recommend them," says Kristin Cole of Kalamazoo (Mich.) Public Safety. "Their staff is professional, knowledgeable and courteous from the security consultant to the technician to the secretary."
Congratulations to EPS on being the 2013 CSAA Five-Diamond Marketing Marvel runner-up
Article TopicsIntrusion · CSAA · EPS Security · Features · Industry Awards · Marketing MARVEL Awards · Metrodial · All Topics
Commenting is not available in this channel entry.


text: Daniel, it is not your beekeeping it is your limitation with the equipment you had starting out as a back yard beekeeper. We all had this problem because we didn't learn soon enough the benefits of using all the same equipment. It don't matter if it is all deeps or all mediums, you choose. Mediums are lighter but the equivalent equipment costs more. So make your selection based on these two parameters.


text:
ArchiveVisual Arts Articles
179 Items
Visualizing American Power
Paul Schmelzer
Oct 2013
Examining US energy production and use for five years, photographer Mitch Epstein became fascinated by a pun: "electrical power came from political power, which came from corporate power—and civic power met up against all that." Here Epstein talks with Paul Shambroom, whose own photos examine issues from nuclear weapons to oil, about aesthetics, activism, and the work of connecting the dots of American power.
Jim Hodges and the Eros of the Everyday
Olga Viso
Oct 2013
When she first encountered Jim Hodges's art—a patchwork of silk billowing in the breeze—Olga Viso was struck by how the piece conjured childhood memories. Nearly two decades later, as co-curator of a survey of Hodges's work, she reflects on an artistic practice that's "rooted in modesty, intimacy, and integrity—one that seeks to find the epic in the most mundane as well as the quotidian in the epic."
Opening the Road Box
Abigail Sebaly
Oct 2013
In the two years since the Walker acquired the Merce Cunningham Dance Company's complete archive of sets, costumes, and performance objects, Cunningham Research Fellow Abigail Sebaly has been busy. She's catalogued 3,443 costume pieces, helped with three research exhibitions, conducted some 40 interviews with Cunningham collaborators, and visited archives across the globe. Here she shares some of her finds.
Public Works
Susannah Schouweiler
Oct 2013
St. Paul is spearheading a quiet revolution in public art. A 2009 city ordinance includes artists in the regulations by which the city makes and remakes itself. Here, artists don't merely make sculptures and murals to adorn the urban landscape; they have a meaningful role in government. As a result, public art is so deeply placed in the workaday services of the city as to be indistinguishable from them.
I Am for an Art: Claes Oldenburg on His 1961 "Ode to Possibilities"
Claes Oldenburg
Sep 2013
Claes Oldenburg's most famous piece of writing, I Am For …, isn't a manifesto. It's a "slightly satirical ode or paean to the possibilities of using anything in one's surroundings" to create art.
The Momentary Monument
Paul Schmelzer
Sep 2013
Ten years after Thomas Hirschhorn pitched his idea for a temporary philosophy center on South Minneapolis' Lake Street, the Swiss artist's Gramsci Monument has been realized in the Bronx. Former Walker chief curator Philippe Vergne, now director of the Dia Art Foundation, discusses both projects and the ripple effect he hopes the New York "monument" leaves behind when it closes September 15.
Station to Station: Doug Aitken's Polyphonic Culture Train
Paul Schmelzer
Sep 2013
"Human beings need a starting point." The motto for The Source, Doug Aitken's video series on creativity's origins, could easily be the slogan for Station to Station, the art train he's taking across the US this month. While the trip has its concrete elements—a starting point, an ending point, some really heavy train cars—he sees it as entirely open-ended: whatever happens along the way is anybody's guess.