如何在 WildFly 中配置 EJB WebServices(入耳式)
Posted
技术标签:
【中文标题】如何在 WildFly 中配置 EJB WebServices(入耳式)【英文标题】:How to configure EJB WebServices in WildFly (in ear) 【发布时间】:2017-02-04 17:42:51 【问题描述】:我有一个 EAR 项目,部署在 WildFly 10.1.0.Final 上 这个 EAR 由一些罐子和战争组成。我的 jar 文件中有一个 WebService。
我不清楚如何配置我的项目。 我在谷歌和调试器上花了很多时间......所以我需要帮助)
我的 AIM:在耳朵/服务器级别的 JAR 中为我的 EJB WebService 设置默认 AuthType/Security-domain。
对于安全域,我在以下位置找到了配置:
Standalone.xml -> 子系统 xmlns="urn:jboss:domain:ejb3:4.0(服务器级别,高优先级) 标签:子系统 xmlns="urn:jboss:domain:ejb3:4.0 范围:所有 EJB
Standalone.xml -> 子系统 xmlns="urn:jboss:domain:undertow:3.0"(服务器级别,仅适用于 Undertow,高优先级) 属性:default-security-domain(服务器级别,中等优先级) 范围:所有网络服务
在 EAR META-INF 中的 jboss-app.xml(中优先级!)中 示例:https://developer.jboss.org/thread/177666 范围:所有 EJB
EAR 子 jar 项目中的 XML 文件 jboss-ejb3.xml(低优先级) http://wildscribe.github.io/Wildfly/8.1.0.Final/subsystem/ejb3/index.html 范围:所有 EJB
WebService 类上的安全域注释: 注释:org.jboss.security.SecurityDomain 范围:单一WebService
另外,我怎么能理解 - ejb bean webservices 的 ejb 属性比 webservices 属性更优先
但是如何设置默认的身份验证方法 BASIC?类上没有注释。我找不到( WEB-INF/web.xml 和 jboss-web.xml 不会影响我的 web 服务。
【问题讨论】:
尝试使用jboss-webservices.xml
描述符。见docs.jboss.org/author/display/JBWS/…
哪里是一个减号,我们从 web 服务模式中获得: 正在使用 maven 吗?
在此存储库https://github.com/wildfly/quickstart 中,您可以找到许多在 Wildfly 中部署的项目示例。特别是对于使用 ejb 的 Web 服务,此示例很有用 https://github.com/wildfly/quickstart/tree/10.x/jaxws-ejb。请注意,在这个项目中需要在 jboss-web.xml 上指明上下文根:
<jboss-web>
<context-root>/yourpath</context-root>
</jboss-web>
Web 服务的配置是通过注解进行的。
/**
* @author rsearls@redhat@com
*/
@Stateless
@Remote(EJB3RemoteInterface.class)
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class EJB3Bean01 implements EJB3RemoteInterface
@WebMethod
public String echo(String input)
return "EJB3Bean01 returning: " + input;
【讨论】:
【参考方案2】:来自 web.xml 的属性仅适用于战争部署。 我发现只有一种方法可以使用 web 服务配置 ejb jar 部署(所有端点和部署在一个地方)。
众所周知,WildFly 使用 Undertow。 我们可以定义Servlet Extension:http://undertow.io/undertow-docs/undertow-docs-1.2.0/#servlet-extensions
添加 src/main/resources/META-INF/services/io.undertow.servlet.ServletExtension。 然后,在这个文件中添加我们的 UndertowDeploymentExtension(实现 ServletExtension)。
然后,在 handleDeployment 方法中添加如下内容: deploymentInfo.setLoginConfig(new LoginConfig(javax.servlet.http.HttpServletRequest.BASIC_AUTH, REALM_NAME));
现在,我们没有 LoginConfig 的 jar 部署将使用我们自定义的 LoginConfig 进行初始化(我们可以省略 @WebContext)。 有关更多信息,您可以在 WebMetaDataCreator.createLoginConfig (wildfly-webservices-server-integration-10.1.0.Final.jar)
进行调试快速预览:https://github.com/wildfly/wildfly/blob/master/webservices/server-integration/src/main/java/org/jboss/as/webservices/tomcat/WebMetaDataCreator.java#L276
此外,您可以从以下地址阅读此建议:http://lists.jboss.org/pipermail/undertow-dev/2016-December/001801.html
【讨论】:
以上是关于如何在 WildFly 中配置 EJB WebServices(入耳式)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JPA/EJB3 和 WildFly 读取未提交的数据?
EJB 未使用 @EJB 在 Wildfly 9.0.0 中初始化