如何在WildFly中配置EJB Web服务(在耳边)

时间:2016-09-27 07:35:55

标签: java web-services ejb wildfly undertow

我有一个EAR项目,部署在WildFly 10.1.0.Final上 这个EAR包括一些罐子和战争。我的jar文件中有一个WebService。

我无法清楚地了解如何配置我的项目。 我花了很多时间在谷歌和调试器......所以我需要帮助)

我的目标:在耳/服务器级别的JAR中为我的EJB WebService设置默认的AuthType / Security-domain。

对于Security-domain,我在以下位置找到了配置:

  • Standalone.xml - > subsystem xmlns =" urn:jboss:domain:ejb3:4.0(服务器级别,HIGHT优先级) tag:subsystem xmlns =" urn:jboss:domain:ejb3:4.0 范围:所有EJB

  • Standalone.xml - >子系统xmlns =" urn:jboss:domain:underow:3.0" (服务器级别,仅适用于Undertow,HIGHT优先级) attribute:default-security-domain(服务器级别,中等优先级) 范围:所有Web服务

  • 在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属性更优先于ejb beans webservices而不是webservices属性

但是如何设置默认的auth metod BASIC?没有关于类的注释。我找不到( WEB-INF / web.xml和jboss-web.xml不会影响我的网络服务。

2 个答案:

答案 0 :(得分:0)

正在使用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;
    }

}

答案 1 :(得分:0)

web.xml中的属性仅适用于war部署。 我发现只有一种方法可以使用webservices配置ejb jar部署(在一个地方用于所有endopoints和部署)。

众所周知,WildFly使用 Undertow 。 我们可以定义 Servlet扩展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初始化没有LoginConfig的jar部署(我们可以省略@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