Не удается создать экземпляр класса: com.ibm.Websphere.naming.WsnInitialContextFactory - PullRequest
1 голос
/ 08 декабря 2011

Мне нужно перенести веб-приложение с AIX на сервер Windows, но оно выдает исключение, подобное его, на недавно установленном IBM WebSphere Community Edition в таких окнах:

javax.servlet.ServletException: javax.naming.NoInitialContextException: Cannot instantiate class: com.ibm.websphere.naming.WsnInitialContextFactory [Root exception is java.lang.ClassNotFoundException: com.ibm.websphere.naming.WsnInitialContextFactory in classloader...

Отслеживание кода и завершение работыбыть вызвано этим кодом:

    Properties env = new Properties();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
    Context jdbcCtx = new InitialContext(env);  

AIX Websphere - это полноценный WebSphere Application Server, а Windows - Community Edition.Я не уверен, какие различия, если таковые имеются.

Может кто-нибудь помочь исправить это?Спасибо!

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

com.ibm.websphere.naming.WsnInitialContextFactory - это определенный класс WebSphere Application Server.

Как утверждают Удо и другие, WebSphere Community Edition - это совершенно другой продукт.

Вы не только изменили ОС времени выполнения с AIX на Windows, но и изменили механизм времени выполнения на другого поставщика.

Если приложение содержало подобный код, специфичный для времени выполнения (WAS) в вашем случае, то они, очевидно, не будут работать, когда они перенесены в другой контейнер Java EE (в данном случае WAS-CE, который фактически основан на на сервере Apache Geronimo).

Как упомянул Удо, нет необходимости явно указывать провайдера InitialContextFactory в коде в наши дни. Раньше это было так в последние 5-6 лет назад, когда разработчики приложений должны были прямо заявить об этом. Если вы смотрите на объект на сервере JNDI, который размещен на том же сервере, указывать это не нужно.

Требуется, когда вы работаете в WAS CE и смотрите на сервер JNDI, работающий на другом WAS (обычный IBM WAS, а не CE), тогда этот код действительно необходим, и вам необходимо убедиться, что эти классы присутствуют в время работы вашего WAS CE CLASSPATH.

1 голос
/ 08 декабря 2011

WebSphere Application Server Community Edition не является настоящим сервером приложений WebSphere. Это «сутенер» Apache Geronimo.

Я бы не рассчитывал увидеть классы IBM в Community Edition, которые присутствуют в вашей AIX WebSphere.

Полагаю, вы можете выбрать:

  • Выбросьте все, что специфично для IBM.
  • Получите хотя бы Express Edition.

Проверьте сравнение WAS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...