Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未找到Weblogic 12.1.3 PrivilegedActions类_Java_Jakarta Ee_Jms_Weblogic - Fatal编程技术网

Java 未找到Weblogic 12.1.3 PrivilegedActions类

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

我创建了一个简单的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_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