Logitech wireless trackball M570 review

As a long time user as the Logitech range of thumb controlled tracker balls (10+ years), it was with great relief when I heard they were bringing it up-to-date, as you can see they have kept it nearly the same (thank goodness), with the same feel and responsiveness , but there are some differences

  • Slightly shorter (this made my thumb ache a tiny bit after the first hour, then it was fine)
  • scroll wheel quieter
  • 2 extra buttons for back and forward browsingIt uses the new Logitech tiny unified receiver dongles which is small enough to just leave plugged in

    The marble is the same size but if you swap with an old one, the movement becomes slightly jerky (daft but I had to try)

    looking underneath we find that Logitech have increased the number of sticky pads, we will see if they stay stuck to the bottom and not slide off ( a minor flaw with the versions 2 & 3 ), the battery compartment (which they say will last for 18Months) and also a slot for the receiver (a nice touch)

    oh, one thing, the marketing blurb on the box says “a different kind of comfort, A different kind of control” errrr lads you have had the same design for over 10 years, there is nothing different about it, however that’s its best point, you got it right all that time ago, and this is a very good evolution and keeps me as a loyal customer, well done Logitech.

Old Comments

Devin(23/03/2011 23:47:43 GMT)

I’ve been using this particular <a href={ Link } trackball</a> for about 5 months and couldn’t be happier with it. No problems at all. The only nitpick I have is the scroll wheel seems really noisy and rough, but so far so good.

CXF webservices on Domino

Since Domino 6 I have only seen people use Apache Axis (up to 1.4) as a web service framework and quite frankly it’s a bit long in the tooth; we want to use a newer framework and if we are sticking with the popular frameworks (i.e. native support in Eclipse), that leaves us with Axis 2 and CXF (yes yes! I know that X or Y is the latest and greatest but given the sedentary nature of large corporations I’ll settle for a functionally rich, well-rounded standard that works and in 2 years time can still be supported).

Anyhow, all my clients seem to have plumped for CXF, so this blog is to show you how to get a CXF client working on Domino 8+ (CXF needs Java 5 or greater).

I am assuming that you have already generated your class files (either via Eclipse wizards or via wsdl2J). If you have not, this is a good Link:

Normally when you are writing / testing a Java agent you just bung the supporting jar files in the agent itself, and give it a run. Unfortunately even if you get all the right jar files, you will get this error:

java.lang.NullPointerException
at org.apache.cxf.wsdl11.WSDLServiceFactory.< init> (WSDLServiceFactory.java:91)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:207)
at org.apache.cxf.jaxws.ServiceImpl.< init> (ServiceImpl.java:150)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:63)
at javax.xml.ws.Service.< init> (Service.java:67)

This means that CXF can’t verify your WSDL (yes it’s a naff error) due to security reasons, so you’re going to have to put the jar files in the ext directory on the server.

CXF uses more jar files than Axis. When you download the binary from http://cxf.apache.org you will find a “WHICH_JAR” text file in the lib directory that tells you which files you will need to include for which function. As my client is using quite a few of the extra functions (such as WS security), I ended up putting the following files in a directory called “CXF” inside the Dominojvmlibext directory (the extra sub-directory is just so I don’t get the files mixed up):

– cxf.jar
– commons-logging.jar
– geronimo-activation.jar
– geronimo-annotation.jar
– geronimo-stax-api.jar
– neethi.jar
– jaxb-api.jar
– jaxb-impl.jar
– XmlSchema.jar
– wstx-asl.jar
– wsdl4j.jar
– geronimo-ws-metadata.jar
– geronimo-jaxws_2.1_spec-1.0.jar
– saaj-api.jar
– saaj-impl.jar
– asm.jar
– geronimo-servlet.jar
– jetty.jar
– jetty-util.jar
– sl4j.jar & sl4j-jdk14.jar (optional – but improves logging)
– bcprov-jdk15.jar
– xalan.jar
– serializer.jar
– wss4j.jar
– xmlsec.jar

(NOTE: If you are already using Java heavily in domino you may already some of these in your ext directory, so be careful to not double-up or give yourself conflicts).

The next bubble of joy will be the following error message (or something very similar):

java.security.AccessControlException: Access denied
(java.lang.RuntimePermission setContextClassLoader)
at java.security.AccessControlException.<init> (AccessControlException.java:62)
at java.security.AccessController.checkPermission(AccessController.java:68)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.Thread.setContextClassLoader(Thread.java:752)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:545)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:537)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:434)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:247)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:132)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:242)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:222)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:115)
at $Proxy27.getAdjustedLocationValues(Unknown Source)

This is a security message, and means you will have to edit the dominojvmlibsecurityjava.policy file. The exact entry will depend on the error you are getting, but this one:

java.security.AccessControlException: Access denied
(java.lang.RuntimePermission setContextClassLoader)

… meant I put the following lines in:

grant {
permission java.lang.RuntimePermission setContextClassLoader;
}

Restart your server and that should be it, your CXF calls should work fine.

PS. I have included full error messages to help future lost souls find this post.

PPS. This posts was corrected and sanitised by Mr Poole to make it readable (thank you)
Old Comments
————
##### Olle Thalen(05/01/2011 14:11:04 GMT)
I get the following exception all the time when I try to run a web service consumer using cxf in domino environment:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from class path resource [META-INF/cxf/cxf.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element ‘beans’.
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:97)
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:87)
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:65)
at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:54)
at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:70)
at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:107)
at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:98)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:64)

Got any ideas?

Contractor Laptops on Clients Site

Software contractors nearly always have a good laptop, often far better than a client would provide for its staff, and certainly with much better software on it (I personally am a fully paid up member of microsoft,IBM and Genuitec developer networks), Contractor are nearly always happy to use this for all clients work, but the majority of major clients don’t want it on-site on the desk never mind on the network.

why is this?, when the client would save so much money? usually security is the given reason? (either allowing viruses in or confidential data out).

On the surface of it, that is a slightly insulting and contradictory implication, in that a client will trust someone to write the core code that grows and maintains their business (often valued in the hundreds of millions) but not trust them to maintain the software and security of a 2K laptop!.

to be fair to the support and security teams they are often not thinking of contractors when these rules are put in place, they are thinking about the guy from finance who habitually opens every attachment that anyone sends to him, and whos laptop is a seething pile of malware, spam bots and viruses, but they can hardly say “we only let people who arn’t dumb bring their laptops in” so we all cop for it.

Thankfully, one of my clients has support managers who are enlightened, so for some time they have overlooked contractors bringing their laptops on site and connecting them , with the general upstanding that if one of us ever screwed up and brought in something nasty, then it would be back to an “all off” and the offender would be fired, this has worked for 4 years, with the occasional bored managerial idiot who has a melt down when they find out being asking if they are prepared to fund the huge cost of providing internal laptops and software for contractors out of their budget (strangely enough none of them seem to care THAT much).

Now we are moving to a new building a more formal procedure is being put in place, and the support manager has come up with a perfect solution, and one I feel could be picked up and used by many corporates with minimal outlay

It is simplicity its self, all large clients have a VPN set-up for remote working, so you just put in a wireless access point (my client trialled it with a cheapo Netgear router) and that access point is only allowed to connect to the VPN servers (your existing firewalls and external facing switches will be able to do this, though you have to remember to present the VPN’s servers EXTERNAL IP address to your wireless access point), and that’s it!, any laptop that can use the VPN can just connect to the wireless network.

Advantages

  • Secure (you will already have the precedent for VPN access even for contractors), and even if someone gets onto the wireless network they gain nothing (not even basic internet access)
  • does not use internet bandwidth
  • easy to control/revoke access
  • CHEAP

    Top tips to make it easier for them to let your laptop on site

  • Have up-to-date reputable anti virus software installed (a printout of your licence does not hurt), they may want to use their corporate one, but the fact you already have one looks good
  • If you are in the UK have your laptops P.A.T. certificate to hand (only laptops older that a year need this)
  • Have your limited liability insurance certificate to hand (you should have this anyway).
  • If you are a Apple head or a Linux boy, or even a up-to-date windows person, you may need a copy of vmware (or you virtual machine poison of choice) as large corporations are notorious for only supporting/allowing old software on their networks

    I like simple solutions 🙂

Old Comments

Martin Scott(11/02/2011 18:23:05 GMT)

[link={ Link } PAT testing Leeds[/link]

MyEclipse for spring 8.6 and good customer service

For those of us who use the rather pleasant MyEclipse IDE (a commercial version of the Eclipse IDE as recommended by Matt White) and in particular “MyEclipse for Spring” we all have been waiting for their 8.6 update to take a look at the new MVC scaffolding feature which gives a comparable feature set to Spring Roo (basically giving the auto code generating and framework building that i remember people calling RAD, but without requiring a dedicated platform such as Domino),.

Anyway I installed the update which promptly broke my IDE in a major way, with it refusing to start and giving a

java.lang.RuntimeException: No application id has been found

error, which in the end turned out to be caused by my flash builder 4 plug-in, ah!, a bit of fiddling and i got it working again, but still it was not a happy ferret, so i just rolled back the VMWare image it lives on and continued as normal,

why is this noteworthy?

Well as i have had such success the powermonkey lot I thought a quick tweet to @skywaysoftware, would do no harm, quick as a flash I got a request from them for the error message and if possible the log, i sent the error message, and within a few hours the following link was sent to me: here, the full text is below

“For those with MyEclipse for Spring 8.5 who have the Adobe Flash Builder plug-in installed, there is an issue when upgrading to MyEclipse for Spring 8.6 that will prevent the IDE from restarting. It can be both avoided (and corrected) by removing the com.adobe.flexbuilder.feature.core.nl1.link from the dropins folder.

If you are upgrading, remove the file before starting ME4S, then perform the 8.5 to 8.6 upgrade. After that is complete, shut down ME4S, re-add the Adobe file, and restart.

If you have upgraded and ME4S won’t start, remove the Adobe drop-in, start ME4S, then stop and re-add the drop-in.”

A nice useable work round, while they sort the problem out, and one that works,it didn’t cost them much and kept me as a loyal customer,

LEARN BIG BUSINESS, LEARN!!!!

Now I’m up and going again, prepare for a review of MVC scaffolding Vs Spring Roo Vs Traditional Rad (in a few days).

A Java Application Infrastructure

The cloud is a big thing nowadays but there are still times when you need to build your own infrastructure to host a large Java application, it needs to be bomb proof but still not cost the earth and grow smoothly at need, such a situation has recently arisen for a client, and while i was putting it together i was luckily enough to chat with application architect for VMware, taking into consideration the tips he added, I put forward the following design, i hope its of use to someone else:

Icons Key for diagrams

This represents a dedicated Apache box used for load balancing, and it forwards requests to the main app servers. This server requires very very little by way of disk storage.


This represents a dedicated JBoss application server. It also has a read-only version of the main MySQL database so all SELECT statements can be run locally.


This represents a logical SQL server, the master database for the application. Its platform will vary as the application grows from a stand-alone database to a multi-master cluster. It is the only database in the system that is written to by the application.


Dashed links indicate when a change is committed to user data. Updates aren’t written to the local database on each application server, but written back to the master database.


Dotted links indicate when updates to the “slave” databases from the “master”. The master database is responsible for ensuring that the slaves are kept up-to-date.


Blue links indicate servers that are sharing user session states, which means users will not lose anything should we have an application server outage.


Red links are the “heart beat” links that the load balancers are monitoring. If the current load balancing server stops responding (per its heart beat) then the backup will pick up its duties (as well as taking over the live IP address).

Phase 1 (Development / test)

This is the most basic configuration, with two application servers sharing user session states (one load balancing).The development and test environments will be set up like this.

Phase 2 (Minimal live)

A basic live environment; this removes the single point of failure on load balancing. You will have to decide as to the format of the logical SQL Master (i.e. whether “Enterprise” or “Cluster”). At this stage you will need to do full load tests (to failure) and decide if it will meets your needs if a phase 3 set-up is required for go-live.

Phase 3 (Mid-range live)


This phase includes the addition of two more App servers. These do not share session states with the initial pair in order to limit the chance of a cascade failure. At this point the option of a delayed read slave for the master database server should be raised as this provides an excellent option to rectify large data corruptions without the need to resort to a full restore.

Phase 4 (Enterprise level)


Classed as a “fully populated” stage. Beyond this architecture, a dedicated load balancing system (hardware) would be required, distributing the application over multiple data centres, or move to a cloud-based infrastructure.
This phase comprises two groups of four servers sharing their user sessions, with two fail-over servers to mitigate cascade failure. The master database is also clustered, and a delayed-read slave become necessary.

give me a yell if you want LDC to build this for you (or even more fun a app that would need it 🙂 )