小编far*_*ett的帖子

在eclipse之外的tomcat上部署时,springSecurityFilterChain重复注册

我对弹簧有点新意,仍然对所有配置感到困惑.我参加了几个不同的教程,似乎每个人都做了不同的事情.我有一个spring应用程序,可以使用tomcat插件通过Eclipse运行.但是当将war文件导出到tomcat本身时,tomcat无法启动和抛出

严重:ContainerBase.addChild:start org.apache.catalina.LifecycleException:启动组件失败

引起:java.lang.IllegalStateException:'springSecuirtyFilterChain'的重复过滤器注册.检查以确保过滤器仅配置一次!

查看完整堆栈跟踪的图片.

在web.xml中注释掉springSecurityFilterChain之后,无论dataSource是否自动装配都会产生一个或两个错误.

  • 如果dataSource是自动装配的,那么我只是得到一个错误,说创建bean securityConfig失败并且没有找到依赖的bean.

  • 如果我让dataSource没有自动装配(就像我在Eclipse中工作的代码那样),那么我得到一个IllegalArgumentException:属性'dataSource'是必需的.

另外,为了不获取多个ContextLoader定义错误,我必须在web xml中注释掉ContextLoaderListener.

从我看到的问题在于使用xml和java进行配置,但我无法确切地指出错误.

我发现了一个类似的问题,但无法解决我的问题. 我在哪里定义`springSecurityFilterChain` bean? 添加一个指向我的securityConfig的bean类放在spring-security.xml中没有帮助.

谢谢!

完整堆栈跟踪的图片

下面是在Eclipse中运行时完全正常运行的代码.

web.xml中

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


        <!-- Spring MVC -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

      <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>servlet.InitServlet</servlet-class>
    <init-param>
      <param-name>configfile</param-name>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>AdminServlet</servlet-name>
    <servlet-class>servlet.admin.AdminServlet</servlet-class>
    <load-on-startup>3</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>servlet.user.UserServlet</servlet-class>
    <load-on-startup>4</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>SignupUserServlet</servlet-name>
    <servlet-class>servlet.user.SignupUserServlet</servlet-class>
    <load-on-startup>5</load-on-startup>
  </servlet>

  <servlet>
   <servlet-name>ReceiveFile</servlet-name>
    <servlet-class>servlet.user.ReceiveFile</servlet-class>
    <load-on-startup>6</load-on-startup>
  </servlet>

  <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/pages/*</url-pattern>
    </servlet-mapping>

  <servlet-mapping>
   <servlet-name>AdminServlet</servlet-name>
   <url-pattern>/AdminServlet</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
   <servlet-name>UserServlet</servlet-name>
   <url-pattern>/UserServlet</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
   <servlet-name>SignupUserServlet</servlet-name>
   <url-pattern>/SignupUserServlet</url-pattern>
  </servlet-mapping> …
Run Code Online (Sandbox Code Playgroud)

java eclipse spring tomcat

8
推荐指数
1
解决办法
1万
查看次数

fprintf没有写入文件

我试图使用以下C代码打印出我传入的数组.它应该以十六进制格式输出每行一个文本,我打开文件没有问题.当我第一次写它时,我没有问题它工作我打开输出文件,我的阵列就在那里.我更改了fileOutName参数,现在我无法打印出任何我尝试更改它的东西以及其他一些东西,似乎没什么用.此外,当我调试它似乎pOutfile是一个糟糕的指针,但就像我说它仍然创建文件,它只是不会写入任何东西.任何帮助,将不胜感激.谢谢

printoutput(int output[], char * fileOutName){
    int i = 0;
    FILE * pOutfile;
    pOutfile = fopen( fileOutName, "w" );
    while(output[i] != 0){
        fprintf( pOutfile, "0x%0.4X\n", output[i] );
        i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

c printf

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

eclipse ×1

java ×1

printf ×1

spring ×1

tomcat ×1