java struts2 hibernate和spring应用程序及soap web服务
我有一个使用struts2、spring和hibernate框架的web应用程序。现在我想通过soapweb服务公开它的一些方法。我有一个类,我只是用java struts2 hibernate和spring应用程序及soap web服务,java,spring,soap,struts2,action-mapping,Java,Spring,Soap,Struts2,Action Mapping,我有一个使用struts2、spring和hibernate框架的web应用程序。现在我想通过soapweb服务公开它的一些方法。我有一个类,我只是用@WebService注释和服务端点接口对它进行了注释。现在,当我在glassfish上部署我的应用程序时,它部署得很好,但当我尝试通过glasssfish管理控制台访问wsdl时。它给了我以下的错误 There is no Action mapped for namespace [/] and action name [UsersControll
@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>
奥索克
org.springframework.web.context.ContextLoaderListener
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
支柱2
/*
/index.jsp
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>
/行动指数
/index.jsp
/register.jsp
/register.jsp
/user/home.jsp
/index.jsp
/index.jsp
/user/home.jsp
/index.jsp
/index.jsp
/index.jsp
/user/home.jsp
/user/files.jsp
/user/edit.jsp
/index.jsp
/user/edit.jsp
/user/home.jsp
/user/files.jsp
/user/files.jsp
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模式
,因此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
并将Web服务配置为使用排除的URL
希望这对其他人有所帮助。您在浏览器中输入的哪些url无法映射到您配置中的操作?@RomanC在glassfish管理控制台中,这是链接