[Pljava-dev] Trigger problem

Mark Colman macolman at tiscali.co.uk
Sun Apr 23 01:00:31 UTC 2006


Hi,

I am running PostgreSQL 8.1 on Windows and installed pl/java automatically
using the Windows installer.  I have created a simple table and executed the
following:

Create function emailme()
Returns trigger
As 'dbudf.SendMail.send'
Language java;

Create trigger trg_emailme
After insert on aTable
For each row
Execute procedure emailme();

I have written the following class:

package dbudf;

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class SendMail
{
	public static void send(org.postgresql.pljava.TriggerData td)
	{try{
		Properties props = System.getProperties();
		props.put("mail.smtp.host", "smtp.tiscali.co.uk");
		Session session = Session.getDefaultInstance(props, null);
		Message msg = new MimeMessage(session);
		msg.setFrom(new InternetAddress("macolman at tiscali.co.uk"));
		msg.setRecipients(Message.RecipientType.TO,
		InternetAddress.parse("m.a.colman at durham.ac.uk", false));
		msg.setSubject("A change to your data");
		msg.setText("Your database has been changed.\n\nPlease use
the PGAdmin tool to browse the table involved.\n\nMark Colman");
		msg.setHeader("X-Mailer", "LOTONtechEmail");
		msg.setSentDate(new Date());
		Transport.send(msg);
    }
    catch (Exception e)
	{
		System.err.println("Error: "+e.toString());
	}
}
}
Which compiles fine, put it in a directory dbudf, and added the directory to
a jar called SendMail.jar - I can then call dbudf.SendMail.send(null) from
within a simple test harness and it sends the e-mail message expected.

I have then executed

Select
sqlj.install_jar('file:///c:/j2sdk1.4.2_09/lib/SendMail.jar','SendMail',true
);
Select sqlj.set_classpath('public','SendMail');

Which seems fine.  Then I insert a row into the table, and get

ERROR:  Unable to find static method dbudf.SendMail.send with signature
(Lorg/postgresql/pljava/TriggerData;)V

Any help greatly appreciated - I am sure this is something glaringly obvious
that I'm missing.

Mark



More information about the Pljava-dev mailing list