Java 未找到Weblogic 12.1.3 PrivilegedActions类
我创建了一个简单的we项目,它调用jms队列并放入消息 代码如下:Java 未找到Weblogic 12.1.3 PrivilegedActions类,java,jakarta-ee,jms,weblogic,Java,Jakarta Ee,Jms,Weblogic,我创建了一个简单的we项目,它调用jms队列并放入消息 代码如下: 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_F
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);
}
}
公共类队列发送
{
//定义JNDI上下文工厂。
公共最终静态字符串JNDI_FACTORY=“weblogic.JNDI.WLInitialContextFactory”;
//定义JMS上下文工厂。
公共最终静态字符串JMS\u FACTORY=“JMS/MyConnectionFactory”;
//定义队列。
公共最终静态字符串QUEUE=“jms/MyTestQueue”;
专用队列连接工厂qconFactory;
专用排队连接;
私人排队会话;
专用队列发送器;
专用队列;
私人短信;
/**
*创建发送所需的所有对象
*发送到JMS队列的消息。
*
*@param ctx JNDI初始上下文
*@param queueName队列的名称
*@exception NamingException如果无法执行操作
*@exception JMSException如果JMS由于内部错误而无法初始化
*/
公共void init(上下文ctx,字符串queueName)
抛出NamingException、JMSexException
{
qconFactory=(QueueConnectionFactory)ctx.lookup(JMS\u工厂);
qcon=qconFactory.createQueueConnection();
qsession=qcon.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
queue=(queue)ctx.lookup(queueName);
qsender=qsession.createSender(队列);
msg=qsession.createTextMessage();
qcon.start();
}
/**
*向JMS队列发送消息。
*
*@param要发送的消息
*@exception JMSExException如果JMS由于内部错误而无法发送消息
*/
公共void发送(字符串消息)引发JMSException{
msg.setText(消息);
qsender.send(msg);
}
/**
*关闭JMS对象。
*@exception JMSException如果JMS由于内部错误而无法关闭对象
*/
public void close()引发JMSExException{
qsender.close();
qsession.close();
qcon.close();
}
/**main()方法。
*
*@param args WebLogic服务器URL
*@操作失败时异常
*/
公共静态void main(字符串[]args)引发异常{
Context ic=getInitialContext(“t3://localhost:7001”);
QueueSend qs=新建QueueSend();
初始化(ic,队列);
读取和发送(qs);
qs.close();
}
私有静态void readAndSend(QueueSend qs)
抛出IOException、JMSException
{
qs.发送(“ciao”);
System.out.println(“发送的JMS消息:ciao\n”);
}
私有静态InitialContext getInitialContext(字符串url)
抛出NamingException
{
Hashtable env=新的Hashtable();
环境放置(Context.INITIAL\u Context\u工厂、JNDI\u工厂);
env.put(Context.PROVIDER_URL,URL);
返回新的InitialContext(env);
}
}
启动main时,出现以下错误:
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)
线程“main”java.lang.NoClassDefFoundError中的异常:weblogic/security/service/PrivilegedActions
位于weblogic.jndi.WLSJNDIEnvironmentImpl.(WLSJNDIEnvironmentImpl.java:57)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:264)
位于weblogic.jndi.internal.JNDIEnvironment.getJNDIEnvironment(JNDIEnvironment.java:37)
在weblogic.jndi.Environment.(Environment.java:92)
在weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)上
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
位于javax.naming.InitialContext.init(InitialContext.java:244)
位于javax.naming.InitialContext。(InitialContext.java:216)
在test.QueueSend.getInitialContext(QueueSend.java:109)处
位于test.QueueSend.main(QueueSend.java:86)
我和谷歌一起发现,特权存在于weblogic.security.service(weblogic api.jar;我在我的项目中包含了这个jar,但在内部它没有这个类),但这只是12.1.3版本的一个问题
感谢您的回复我找到了解决方案
我已经更新到12.2.1并生成了一个
wlfullclient.jar
。我已将其添加到构建库路径,并删除了WebLogic库。WebLogic 12.2.1存在相同的问题我也有WebLogic 12.1.3存在相同的问题。您到底在项目中添加了哪些jar文件?我找不到weblogic-api.jar。只有一个wls-api.jar。我将wls-api.jar和weblogic.jar添加到我的类路径中,但是问题仍然存在。它位于这里:wlserver\modules\com.oracle.css.weblogic.security.wls_7.1.0.0.jar