我初学J2EE,在书上看到的实例程序,但是放在MyEclipse里出了错误,希望各位高人指点下,这 是怎么回事
代码:
import javax.naming.*;
import javax.jms.*;
public class p2ptry{
private Connection connection;
private Session session;
private MessageProducer producer;
public static void main(String[] args) throws JMSException, NamingException{
p2ptry sender=null;
try{
sender=new p2ptry();
System.out.println("sender");
sender.sendMessage("Hello world");
}
catch(Exception ex){
System.out.println(ex);
}
finally
{
try{
sender.close();
}
catch(Exception ex){
}
}
}
public p2ptry() throws JMSException,NamingException{
Context context =new InitialContext();
ConnectionFactory connectionFactory=(ConnectionFactory)context.lookup("jms/QueueConnectionFactory");
connection=connectionFactory.createConnection();
session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination=(Destination)context.lookup("jms/firstQueue");
producer=session.createProducer(destination);
}
public void sendMessage(String msg) throws JMSException{
TextMessage message=session.createTextMessage();
message.setText(msg);
producer.send(message);
}
public void close() throws JMSException{
producer.close();
session.close();
connection.close();
}
}这是错误
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at p2ptry.<init>(p2ptry.java:31)
at p2ptry.main(p2ptry.java:11)
代码:
import javax.naming.*;
import javax.jms.*;
public class p2ptry{
private Connection connection;
private Session session;
private MessageProducer producer;
public static void main(String[] args) throws JMSException, NamingException{
p2ptry sender=null;
try{
sender=new p2ptry();
System.out.println("sender");
sender.sendMessage("Hello world");
}
catch(Exception ex){
System.out.println(ex);
}
finally
{
try{
sender.close();
}
catch(Exception ex){
}
}
}
public p2ptry() throws JMSException,NamingException{
Context context =new InitialContext();
ConnectionFactory connectionFactory=(ConnectionFactory)context.lookup("jms/QueueConnectionFactory");
connection=connectionFactory.createConnection();
session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination=(Destination)context.lookup("jms/firstQueue");
producer=session.createProducer(destination);
}
public void sendMessage(String msg) throws JMSException{
TextMessage message=session.createTextMessage();
message.setText(msg);
producer.send(message);
}
public void close() throws JMSException{
producer.close();
session.close();
connection.close();
}
}这是错误
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at p2ptry.<init>(p2ptry.java:31)
at p2ptry.main(p2ptry.java:11)
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
env.put("java.naming.provider.url", "jnp://"+ip+":1099");
env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
Context context = new InitialContext(env);