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

在web.xml中指定context-参数,同时集成Spring和jersey

阎功
2023-03-14

我知道已经有一个关于这个主题的问题,但是在增加价值时,应用程序不起作用

我正在尝试集成Spring和shine,当我添加上下文参数标签来指定应用程序上下文时.xml应用程序将不会加载主页(索引.jsp在webContent文件夹下),如果该标签被重新删除,应用程序加载主页,但thrn i将无法指定spring(应用程序上下文.xml)的配置

这是我的web.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Demo</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>
        com.sun.jersey.spi.spring.container.servlet.SpringServlet
    </servlet-class>
    <init-param>
        <param-name>
                             com.sun.jersey.config.property.packages
                    </param-name>
        <param-value>com.im.hellocontroller</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>
 <context-param>  
 <param-name>contextClass</param-name>  
 <param-value>
 org.springframework.web.context.support.AnnotationConfigWebApplicationContext
  </param-value>  
 </context-param>
 <context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <listener>
 <listener-     class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-  class>org.springframework.web.context.request.RequestContextListener</listener- class>
</listener> 
</web-app>

这是我的绒球.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Inventory-Management</groupId>
<artifactId>Inventory-Management</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<repositories>
    <repository>
        <id>maven2-repository.java.net</id>
        <name>Java.net Repository for Maven</name>
        <url>http://download.java.net/maven/2/</url>
    </repository>
</repositories>

<dependencies>

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
    </dependency>

    <!-- Jersey -->
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.19</version>
    </dependency>

    <!-- Spring dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>4.2.1.RELEASE</version>
    </dependency>

    <!-- Jersey + Spring -->
    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-spring</artifactId>
        <version>1.19</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!--  Hibernate dependencies -->

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.0.1.Final</version>
    </dependency>

    <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.36</version>
    </dependency>

</dependencies>



<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
        </plugin>
    </plugins>
</build>

以下是我的applicationContext.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
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.0.xsd 
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.im.hellocontroller"/>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/imanagement" />
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean> 

 <bean id="sessionFactory"  
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
<property name="dataSource" ref="dataSource" />  
<property name="annotatedClasses">    
        <list>    
            <value>com.im.beans.User</value>    
        </list>    
    </property>   
<property name="hibernateProperties">  
<props>  
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
<prop key="hibernate.current_session_context_class">thread</prop> 
<prop key="hibernate.show_sql">true</prop>  
<prop key="hibernate.hbm2ddl.auto">update</prop>

 </props>  
</property>  
 </bean> 

</beans>

applicationContext.xml在类路径(即src文件夹)中,web.xml在WEB-INF下,index.jsp在WebContent下

感谢您的任何帮助!

共有2个答案

淳于嘉树
2023-03-14

我终于找到了我问题的解决方案,我正在混合 jersey1.x 和 jersey2.x maven 依赖项(太阳和玻璃鱼的依赖性

闽高峯
2023-03-14

基本问题是您混淆了xml和注释配置。您需要知道contextClass和contextConfigLocation上下文参数之间的关系,以及ContextLoaderListener如何使用它们。

  1. contextClass:指配置类。您在这里提到了org.springframework.web.context.support。注释ConfigWebApplicationContext
  2. contextConfigLocation:这是Spring Boot程序将搜索配置的位置。您将contextClass指定为AnnotationConfigWebApplicationContext,因此您应该给出SpringBean配置类所在的包名。我假设您有这样一个类,并用@Configuration注释

如果您没有这样的@Configuration带注释的类删除上下文类,并仅将上下文配置位置参数与xml路径作为值。默认情况下,上下文加载程序侦听器采用基于 xml。下面是从基于 xml 的Spring迁移到 Java 配置的示例

您可以在此处找到适合球衣集成的准备示例。

接下来的事情我仍然很困惑,为什么您要为REST应用程序使用Request estContextListener。如果您没有任何特殊用途,请按照其留档将其删除。如果您想使用它,此示例将有所帮助

也可以在这里找到关于这个问题的一些有用的细节

 类似资料:
  • 我正在尝试将球衣与Spring结合起来。 我对网络有疑问。xml配置。 这个例子包括SpringServlet: https://www.mkyong.com/webservices/jax-rs/jersey-spring-integration-example/ 但是另一个例子不包括SpringServlet。 https://github.com/jersey/jersey/blob/2.2

  • 从github下了一个项目源码,需要用到openCV, 按项目中介绍的编译操作: ./gradlew clean build 结果提示:

  • 我注意到,将coda hale度量库添加到类路径中会自动配置度量。 这有效,我得到注入的指标注册豆。 然而,我如何在/metricsendpoint中公开这些新的指标呢? 谢谢!

  • 上面的代码可以工作,客户端得到“处理请求中的错误”,服务器日志中有一个条目“Timeout exception is through”。但我在日志中也看到以下异常: MyTransformer的实现似乎不正确。 你能帮我定制变压器吗?如何在转换方法中获得有效负载,这样我就可以回复客户机作为‘处理请求的错误。有效载荷='+有效载荷? 非常感谢Artem的完美解决方案。

  • 我目前正在尝试将我的项目从Java EE转移到Spring Boot项目。但是,我对dispatcher servlet和web.xml的部分感到困惑,项目似乎不再读取web.xml了。当前项目正在Tomcat7上运行。 我在下面附上了的示例,版本是2.5。 QNS: 我是否应该将中的所有内容转换为依赖spring dispatcher,如果是的话,我该如何实现呢? 是否正在远离作为spring

  • 问题内容: 我想使用Spring Batch和Spring Integration从数据库导入数据,并将它们写入文件,然后通过ftp将其传输到远程服务器。 但是我想我的问题是我不想为我的表创建域对象。我的查询是随机的,我想要一些可以读取数据并将其写入文件并进行传输的东西。 是否可以在不创建各自的域对象的情况下使用Spring Batch和Integration? 问题答案: 绝对。您可以将JDBC