繁体   English   中英

java struts2 hibernate和spring应用程序和soap web服务

[英]java struts2 hibernate and spring application and soap web services

我有一个使用struts2,spring和hibernate框架的Web应用程序。 现在我想通过soap web服务公开它的一些方法。 我有一个类,我只是用@WebService注释和服务端点接口注释它。 现在,当我在glassfish上部署我的应用程序时,它部署得很好,但是当我尝试通过glasssfish管理控制台访问wsdl时。 它给了我以下错误。

There is no Action mapped for namespace [/] and action name [UsersControllerImplService] associated with context path [/ossoc].

我理解它与配置有关但我无法弄清楚配置是什么。

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_3_0.xsd"
        id="WebApp_ID" version="3.0">

        <display-name>ossoc</display-name>


         <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>

        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

        <welcome-file-list>
            <welcome-file>/index.jsp</welcome-file>
        </welcome-file-list>

    </web-app>

struts2.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.objectFactory" value="spring" />

    <package name="user"  namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="authentication" class="com.riteshsangwan.ossoc.core.interceptors.AuthenticationInterceptor"></interceptor>
            <interceptor-stack name="authStack">
                <interceptor-ref name="authentication"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="authStack"></default-interceptor-ref>

         <global-results>
            <result name="login" type="redirect">/index.action</result>
        </global-results>

        <action name="register" class="com.riteshsangwan.ossoc.core.actions.RegisterAction">
          <interceptor-ref name="defaultStack"></interceptor-ref>
          <result name="success">/index.jsp</result>
          <result name="error">/register.jsp</result>
          <result name="input">/register.jsp</result>  
        </action>

        <action name="login" class="com.riteshsangwan.ossoc.core.actions.LoginAction">
          <interceptor-ref name="defaultStack"></interceptor-ref>
          <result name="success">/user/home.jsp</result>
          <result name="error">/index.jsp</result>
          <result name="input">/index.jsp</result>  
        </action>

        <action name="activate" class="com.riteshsangwan.ossoc.core.actions.ActivateAction">
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result name="success">/user/home.jsp</result>
            <result name="error">/index.jsp</result>
            <result name="input">/index.jsp</result>
         </action>



        <action name="index">
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result>/index.jsp</result>
        </action>

        <action name="home">
            <result>/user/home.jsp</result>
        </action>

        <action name="showfiles" class="com.riteshsangwan.ossoc.core.actions.ShowFiles">
            <result name="success">/user/files.jsp</result>
        </action>

        <action name="edit">
            <result>/user/edit.jsp</result>
        </action>

        <action name="logout" class="com.riteshsangwan.ossoc.core.actions.LogoutAction">
            <result name="success">/index.jsp</result>
        </action>

        <action name="changepassword" class="com.riteshsangwan.ossoc.core.actions.ChangePassword">
            <result name="success">/user/edit.jsp</result>
        </action>

        <action name="upload" class="com.riteshsangwan.ossoc.core.actions.UploadFile">
            <result>/user/home.jsp</result>
        </action>

        <action name="showgrid" class="com.riteshsangwan.ossoc.core.actions.ShowFiles">
            <result name="success">/user/files.jsp</result>
        </action>

        <action name="deletefile" class="com.riteshsangwan.ossoc.core.actions.DeleteFile">
            <result name="success">/user/files.jsp</result>
        </action>

        <action name="downloadfile" class="com.riteshsangwan.ossoc.core.actions.DownloadFile">
            <result name="success" type="stream">
                <param name="contentType"></param>
                <param name="inputName"></param>
                <param name="contentDisposition"></param>
                <param name="bufferSize"></param>
                <param name="allowCaching"></param>
                <param name="contentLength"></param>
            </result>
        </action>

    </package>

</struts>

applicationContext.xml中

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

        <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />


        <!-- Database Configuration -->

    <import resource="DataSource.xml"/>
    <import resource="HibernateSessionFactory.xml"/>

    <!-- Beans Declaration -->
    <import resource="UsersBean.xml"/>

</beans>

为什么这里的每个人都如此渴望投票。

这是问题所在。 web.xml ,struts2过滤器映射了/* url pattern因此struts2将过滤每个请求,包括对webservice servlet的请求。 由于过滤器在servlet之前执行所以我得到的操作没有映射错误。 来自struts2文档。 动作映射扩展已更改为.action plus“”表示如果我只是在地址栏中输入servlet的名称,struts2将把它作为操作并检查struts2.xml以获取相关的操作映射,因为没有动作映射所以它会抛出错误。

解决方案我只是在URL模式映射中的url之后添加.extension,因此struts2将视为servlet请求,其他选项将使用

<constant name="struts.action.excludePattern" value="URLTOEXCLUDE"/> 
and configure the webservice to use the excluded URL

希望这有助于其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM