2016-04-22 149 views
4

我创建了一个简单的我们项目,调用一个jms队列并放入一条消息。Weblogic 12.1.3 PrivilegedActions class not found

下面的代码:

public class QueueSend 
{ 
// Defines the JNDI context factory. 
public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; 

// Defines the JMS context factory. 
public final static String JMS_FACTORY="jms/MyConnectionFactory"; 

// Defines the queue. 
public final static String QUEUE="jms/MyTestQueue"; 

private QueueConnectionFactory qconFactory; 
private QueueConnection qcon; 
private QueueSession qsession; 
private QueueSender qsender; 
private Queue queue; 
private TextMessage msg; 

/** 
    * Creates all the necessary objects for sending 
    * messages to a JMS queue. 
    * 
    * @param ctx JNDI initial context 
    * @param queueName name of queue 
    * @exception NamingException if operation cannot be performed 
    * @exception JMSException if JMS fails to initialize due to internal error 
    */ 
public void init(Context ctx, String queueName) 
    throws NamingException, JMSException 
{ 
    qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); 
    qcon = qconFactory.createQueueConnection(); 
    qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 
    queue = (Queue) ctx.lookup(queueName); 
    qsender = qsession.createSender(queue); 
    msg = qsession.createTextMessage(); 
    qcon.start(); 
} 

/** 
    * Sends a message to a JMS queue. 
    * 
    * @param message message to be sent 
    * @exception JMSException if JMS fails to send message due to internal error 
    */ 
public void send(String message) throws JMSException { 
    msg.setText(message); 
    qsender.send(msg); 
} 

/** 
    * Closes JMS objects. 
    * @exception JMSException if JMS fails to close objects due to internal error 
    */ 
public void close() throws JMSException { 
    qsender.close(); 
    qsession.close(); 
    qcon.close(); 
} 
/** main() method. 
* 
* @param args WebLogic Server URL 
* @exception Exception if operation fails 
*/ 
public static void main(String[] args) throws Exception { 

    Context ic = getInitialContext("t3://localhost:7001"); 
    QueueSend qs = new QueueSend(); 
    qs.init(ic, QUEUE); 
    readAndSend(qs); 
    qs.close(); 
} 

private static void readAndSend(QueueSend qs) 
    throws IOException, JMSException 
{ 

     qs.send("ciao"); 
     System.out.println("JMS Message Sent: ciao \n"); 


} 

private static InitialContext getInitialContext(String url) 
    throws NamingException 
{ 
    Hashtable<String, String> env = new Hashtable<String, String>(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); 
    env.put(Context.PROVIDER_URL, url); 
    return new InitialContext(env); 
} 
} 

当我启动主,我有这样的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/security/service/PrivilegedActions 
    at weblogic.jndi.WLSJNDIEnvironmentImpl.<clinit>(WLSJNDIEnvironmentImpl.java:57) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at weblogic.jndi.internal.JNDIEnvironment.getJNDIEnvironment(JNDIEnvironment.java:37) 
    at weblogic.jndi.Environment.<clinit>(Environment.java:92) 
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117) 
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684) 
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) 
    at javax.naming.InitialContext.init(InitialContext.java:244) 
    at javax.naming.InitialContext.<init>(InitialContext.java:216) 
    at test.QueueSend.getInitialContext(QueueSend.java:109) 
    at test.QueueSend.main(QueueSend.java:86) 

我已经成立,与谷歌,该PrivilegedActions是在weblogic。 security.service(weblogic-api.jar;我已经包括这个jar在我的项目,但内部它没有这个类),但只是12.1.3版本的问题?

感谢您的回复

+0

与weblogic 12.2.1相同的问题 – Alex

+0

我与Weblogic 12.1.3有同样的问题。您将哪些jar文件添加到项目中?我找不到weblogic-api.jar。只有一个wls-api.jar。我将wls-api.jar和weblogic.jar添加到我的类路径中,但问题仍然存在。 – AliReza19330

+0

我正在使用weblogic 12.1.3我终于找到了所需的jar文件。它位于:'wlserver \ modules \ com.oracle.css.weblogic.security.wls_7.1.0.0.jar' – AliReza19330

回答

1

我找到了解决方案。

我已更新至12.2.1并生成wlfullclient.jar。我已将它添加到Build Library Path中并删除了WebLogic Libraries。