当前位置: 首页 > 知识库问答 >
问题:

将Spring与WebSphere8.5.5和ApacheWink一起使用-ClassNotFoundException

杨骏
2023-03-14

我目前正在使用Wink 1.1.1和Spring 3.1.2迁移一个Java应用程序从WAS7到WAS8.5.5。我正在尝试使用Wink 8.5中可用的本地Wink集成,而不是使用我们目前在Wink 7中使用的单独Wink罐。

我得到了一个错误的服务器启动,看起来像这样:

原因:java。lang.ClassNotFoundException:org。阿帕奇。眨眼服务器内部的登记处。java上的ResourceRegistry。网URLClassLoader。findClass(URLClassLoader.java:434)

我对此有点困惑,因为据我所知,上面引用的类确实包含在wink jar的Apache版本中。

我想我的问题围绕着IBM对Wink 1.1.1的实现,它集成到WAS 8.5.5中。这个类不应该在IBM的实现中也可用吗?我错过了什么?

这是我的网站的一个片段。xml,以防有帮助:

 <servlet>
    <servlet-name>IBM Rest Servlet</servlet-name>
    <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
  </servlet>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:META-INF/server/wink-core-context.xml
        /WEB-INF/spring/applicationContext-configuration.xml</param-value>
  </context-param>

另外,在我的战争中,我的lib文件夹中只有wink-spring-support-1.1.1-incubating.jar。那里没有其他眨眼罐。

这是我的applicationContext配置。xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd">

    <context:annotation-config />

    <bean class="org.apache.wink.spring.Registrar">
        <property name="classes">
            <set value-type="java.lang.Class">
            </set>
        </property>
        <property name="instances">
            <set>
                <ref local="someResource" />
                <!-- ... -->
            </set>
        </property>
    </bean>

    <!-- Providers -->
    <bean id="jaxbProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" >
        <property name="mapper" ref="jacksonObjectMapper"/>
    </bean>

    <bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" >
        <property name="annotationIntrospector" ref="jacksonAnnotationIntrospector"></property>
    </bean>

    <bean id="jacksonAnnotationIntrospector" class="org.codehaus.jackson.map.AnnotationIntrospector$Pair" >
        <constructor-arg ref="primaryAnnotationIntrospector" />
        <constructor-arg ref="secondaryAnnotationIntrospector" />
    </bean>

    <bean id="primaryAnnotationIntrospector" class="org.codehaus.jackson.xc.JaxbAnnotationIntrospector" />
    <bean id="secondaryAnnotationIntrospector" class="org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector" />

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
    </bean>

    <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="properties" ref="allProperties"/>
    </bean>


    <bean id="allProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="ignoreResourceNotFound" value="true" />
        <property name="locations">
           <list>

               <value>classpath*:/META-INF/${Environment}-environment.properties</value>

           </list>
       </property>
    </bean>

    <import  resource="applicationContext-otherFile.xml"/>

</beans>

类路径上的Spring JAR:

spring-jdbc-3.1.1.RELEASE.jar
spring-test-3.1.2.RELEASE.jar
spring-context-3.1.2.RELEASE.jar
spring-beans-3.1.2.RELEASE.jar
spring-core-3.1.2.RELEASE.jar
spring-tx-3.1.1.RELEASE.jar
spring-web-3.1.2.RELEASE.jar
spring-asm-3.1.2.RELEASE.jar
spring-aop-3.1.2.RELEASE.jar
spring-expression-3.1.2.RELEASE.jar

我已经尝试了两个类加载器设置的所有4种可能的组合(类加载器顺序)

谢谢你的帮助!

共有2个答案

严柏
2023-03-14

我能想到的问题是“ResourceRegistry”类是从EAR内部的类而不是WAR中访问的。Wink类的作用域仅限于WAR,我猜应用程序正试图从WAR外部访问它,这就是为什么您会得到所提到的类的ClassNotFoundException。

巫化
2023-03-14

我在使用websphere时遇到过许多ClassNotFoundException,根据我的经验,许多异常可以通过将websphere ClassLoader更改为PARENT_LAST来解决。这允许应用程序在websphere尝试加载websphere JRE中包含的JAR之前加载与应用程序一起打包的所有JAR。

 类似资料:
  • 我目前正在使用Wink 1.1.1和Spring 3.1.2将Java应用程序从WAS 7迁移到WAS 8.5.5。我正在尝试使用WAS8.5中提供的本机Wink集成,而不是使用目前WAS7中单独的Wink jar。 我得到了一个错误的服务器启动,看起来像这样: 造成原因:java.io.FileNotFound异常:类路径资源[META-INF/server/wink-core-context.

  • 问题内容: 我是Spring的新手。 我们正在使用Spring Security功能。数据库连接:JPA的eclipselink实现。数据库:MySql 使用spring security时,身份验证提供程序的配置如下- 但是在JPA中,我们没有定义数据源,我们将Persistence unit与provider一起使用 那么,我们如何配置身份验证提供程序,以便将JPA用于数据库连接? 数据源引用

  • 我正在试图理解如何编写一个简单的方法来从一个DB中检索数据,但没有成功。我正在使用Spring Boot2.1、Hibernate(由Spring Boot提供)、Wildfly14和Oracle12。 使用standalone.xml(由application.properties文件读取)上的数据源,与DB的连接似乎可以工作。我的问题是,如果我尝试使用EntityManager、EntityM

  • 我创建了一个新的VS2012项目使用热毛巾模板,作为回报,使用Durandal,淘汰赛和微风。 我想使用jaydata而不是微风,对于ui层,我想使用出色的asKendoDataSource()功能来为kendoui网格供电。 我按照所有的指示,使kendoui工作良好的杜兰达尔。这很好。 我有一个模型,在这个模型中,我获取jaydata实体并在其上运行asKendoDataSource()。“我

  • 我正在尝试学习python、mongodb和flask,我正在使用Miguel Grinberg提供的非常优秀的博客,他在博客上提供了一套很棒的教程。米格尔格林伯格。通用域名格式 我有一个小的RESTful服务器工作正常,但现在想从mongo而不是mysql中提取东西 我可以使用下面的代码拉出mongo记录,但我很难让它呈现出来。 我在下面的代码中使用了箭头来显示我在哪里挣扎,我认为缺乏经验。任何

  • 更新:不幸的是,我没能用自定义TrustStore做到这一点。我用installCert.java安装了证书。