(No) issues with the WordPress DB Plugin

Since I moved my hosting location I had some problems to schedule backups with the WordPress DB Plugin.
Simple Task: I wanted to create backups of my DB and have it emailed to me once a week.
This used to work great with my old hosting environment.

Eventually I discovered that I did not receive any more backups.

Doing backups manually (and downloading them) worked fine. If I decided to not not download them, but to email them, I got an error stating:

Oh well, that did not sound good. The error wasn’t that helpful either.

Some sketched solutions I tried (and didn’t work) were:

  • Increase memory limit
  • Rewrite some plugin code

I don’t want to go into the embarassing details here, because the solution was … ehhhh … simple.

Solution

In the managing UI of my provider (hosteurope) you can define a standard email adress, which I did not know of. Set it and everything worked fine! The email adress configured within wordpress does not seem to suffice.

I am a little sad, that this wasn’t obvious from the logs or the UI. Or the provider could have simply predefine a standard adress, that would have reached my primary adress (catch all).

Funny thing is, that I did find this only because I was about to install some other DB backup tool, that pointed me to that potential problem.

 

 

Achievement Unlocked: EclipseCon Speaker

So it’s finally done!
I gave a talk about Eclipse RCP in our Form-based application last Friday (04-11-2011): Tickling the shoulders of giants.
I was awfully nervous, but after all it was a great experience and everything went pretty well.
Considering the time of the talk (Last day of the conference, right after lunch), there were quite some attendees. Though the 30-40 people appeared rather lost to me in this quite large venue (130+ seats). ;)

I cannot remember that much of the actual talk, it kinda just happenend in a trance-like state.
I finished it a 1 or 2 minutes ealier than estimated, I wonder what I’ve forgotten to say ;).
Some quick questions answered and it was done.
The people I talked to afterwards seem to have liked it.

The slides are available via slideshare.

You can download them here aswell.
The slides and my talking were recorded and I’m really looking forward to see this recording.

[UPDATE]

The recording can be viewed here.

Or here:

 

Looking forward to the next talk.

JMS Fun in JEE Wonderland

Recently I had to dig into JMS to implement some asynchronous behaviour in our current application.
I haven’t used JMS thus far, but it looked quite promising and straightforward to me.
I got the ConnectionFactory and queues working quite fast and the first messages appeared in my queue. Horray!
To consume those messages I had to implement a MessageListener which looked something like this

@MessageDriven(
name = "MyQueueListener",
mappedName ="jms/MyQueue",
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")}
)

public class MyQueueListener implements MessageListener {

private IMyStalelessSessionBean myStalelessSessionBean;

public MyQueueListener () {}

public void onMessage(Message message) {
//Consume my message
}

@EJB(beanName="MyStalelessSessionBean")
public void IMyStalelessSessionBean (IMyStalelessSessionBean myStalelessSessionBean ) {
this.myStalelessSessionBean = myStalelessSessionBean ;
}
}

Looked quite ok to me, deployment on the Weblogic server went well. So I should be ready to rock!
But, after I put something meaningful in my queue, onMessage() was not called, instead I was greeted by:

#### <> <> <> java.lang.IllegalArgumentException: argument type mismatch.
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.bea.core.repackaged.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:121)
at com.bea.core.repackaged.springframework.jee.inject.MethodInjection.apply(MethodInjection.java:47)
at com.bea.core.repackaged.springframework.jee.inject.Jsr250Metadata.applyInjections(Jsr250Metadata.java:233)
at com.bea.core.repackaged.springframework.jee.inject.Jsr250Metadata.inject(Jsr250Metadata.java:218)
at weblogic.ejb.container.injection.EjbComponentCreatorImpl.injection(EjbComponentCreatorImpl.java:131)
at weblogic.ejb.container.injection.EjbComponentCreatorImpl.getBean(EjbComponentCreatorImpl.java:74)
at weblogic.ejb.container.manager.BaseEJBManager.createNewBeanInstance(BaseEJBManager.java:216)
at weblogic.ejb.container.manager.BaseEJBManager.allocateBean(BaseEJBManager.java:233)
at weblogic.ejb.container.manager.MessageDrivenManager.createBean(MessageDrivenManager.java:286)
at weblogic.ejb.container.pool.MessageDrivenPool.createBean(MessageDrivenPool.java:165)
at weblogic.ejb.container.pool.MessageDrivenPool.getBean(MessageDrivenPool.java:90)
at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:434)
at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4072)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:3964)
at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:4490)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)

IllegalArgumentException while calling onMessage! WTF! I was quite lost!
Tweaked the @MessageDriven-annotation and doublechecked the correct signature of onMessage. But no success!
After a while I set an ExceptionBreakpoint for IllegalArgumentException and found myself in the middle of JEE internals. Reflection all the way!

Eventually I found the culprit:
The stateless session bean I wanted to be injected seemed to be null.
Removed that code temporarily. And bang! onMessage was called. After fixing the injection everthing worked well.

But to cut a long story short:
What does an IllegalArgumentException do to help me under that circumstances. My mistake had no obvious connection to the onMessage-method.
Something more meaningful would be highly appreciated and would have saved me a lot of time.
But still it is always a little fun to me, to finally get my head around something like that ;)

EclipseCon 2011 Session proposed

I managed to propose a session for the EclipseCon 2011 conference the last minute.
The talk will deal with ouir experiences while implementing a Rich Client based on Eclipse RCP.
The decision if it will accepted is announced on September, 1st. So keep your fingers crossed. I am excited already! And a little nervous ;-)
Here is a link to the proposal.

English or Deutsch

Ich überlege, ob es nach wie vor eine gute Idee ist auf englisch zu posten. Vielleicht halte ich es so, dass ich SW-Entwickler Themen eher auf englisch verfasse, den Rest eher auf deutsch.  Da ich mich selber ärgere wenn ich ein hilfreiches Posting aufgrund der Sprachbarriere nicht richtig verwenden kann, geht eigentlich kein Weg an Englisch vorbei.  Andere Themen haben da eher lokalen Charakter und da hält mich die Vorgabe „englisches Posting“ eher davon ab mehr zu posten. Was ich etwas schade finde. Von daher sollte da Deutsch die erste Wahl sein.

Aber wie halte ich es dann mit dem „Drumherum“. Dann bräuchte ich konsequenterweise auch zwei Versionen der Menüs, des Abouts usw. Kann WordPress i18n? Gibt es dafür Plugins? Ist der Aufwand dafür gerechtfertigt? Wie aufwändig ist denn das überhaupt. Wahrscheinlich muss ich die Wahl meines Themes auch davon abhängig machen. Ich muss da noch mal in mich gehen.

Moving Servers: Status

As you might have noticed,  my site is more or less back again. Until now the relocation did not cause any major headaches, which is a good thing ;)

I did a fresh install of wordpress, as my new provider offered me a one-click-install option. It wasn’t actually „one-click“, downloading and unzipping WordPress would have been just as fast.

There were basically two things which bothered me:

  1. The installer forced me to use a custom prefix for my wordpress database tables. Usually a good thing, but the prefix could only consist of numbers and characters and especially no underscore. And it didn’t add any separator. So I ended up with tablenames like xxwp_content. Ugly, don’t you think. As I do not plan to add another wordpress installation, I could have easily stuck with wp_content but the installer did not leave that choice. This makes importing an old sql-dump harder than it should be. But I didn’t use that dump anyway ;)
  2. Updates of wordpress did not work out-of-the-box. The installer forgot creating a temporary folder, so that the update process stumbled on missing files. Or my provider did not set the property pointing to temporary storage properly. Just as bad.
    So what I did was:

    • Created a temporary folder [wordpress-install-dir]/tmp
      Keep an eye on the permissions.
    • Updated wp_config.php with

      putenv('TMPDIR='. ABSPATH .'tmp');
      define('WP_TEMP_DIR', ABSPATH . 'tmp');

    After I managed to solve those issues. I actually could install the WordPress xml importer plugin and everything went fine. I just had to upload some images and I was done.

    Now I am more or less through reinstalling my former set of plugins. That was quite straightforward, except the iG:Syntax Hiliter Plugin, which did not seem to be maintained any longer. As some post rely on it, I had to manually move it from my old site. Perhaps I should look for a replacement.

    Right now I am looking out for a new theme, though iBlog looks very nice. Perhaps I’ll keep it.  It’s just that it feels more like an addon than just a style-provider.

    Perhaps this will keep me busy for some time ;) Please feel free to suggest a nice theme.

Moving Servers

Hi all,

I am about to move my site to a new provider. I hope the downtime will only be a short one. Perhaps I will blog my experiences of moving WordPress from one place to another at a later time. Interesting topic. And suprisingly not that trivial.

Thanks go out to Marc for providing me with webspace for quite some time now! Cheers!

CU

My impressions of the iPad … continued!

I always wanted to write a follow-up to my initial thoughts on the iPad. Now with the arrival of the second wave of the iPads, it’s just about time to finally do so:

I love it, some don’t!

By now I absolutely love the iPad. As I guessed, it serves as a convenient device resting on the couch table. Brilliant for a quick Google Search, a lookup for the train schedule, a game or simply the weather. Admittingly you do not NEED that, but by now I would miss that kind of convenience.
Many people argue (some even very emotionally), that I could use a laptop for that as well.
I could. But the iPad does not boot and for simple tasks it’s way faster. But if you don’t want to use the iPad, don’t use it and noone gets hurt.

But there are some drawbacks still:

Flash

I occasionally miss Flash. Not for the random Flash-Rubbish. If some web-guy doesn’t know  HTML5, then (90% of the time) I do not really need that page.
No, I miss the Myspace and Facebook Audio-Players. I still love to see something comparable to the youtube-app.

No tethering

By now I still cannot tether with my iPhone. iOS 4.3 might be the solution. But since I only own a 3GS, I might be unlucky.

iPad2

Now with the advent of the iPad2, I keep asking myself, if I should get it right away ;) But though I couldn’t get my hands on one by now, I suppose I won’t buy one. It definitely looks sexy, the covers are brilliant and speed is always nice. But all in all it doesn’t outshine my device. More memory would have been nice. Perhaps I’ll change my mind when I see one ;)