2015-11-06 57 views
10

我剛剛爲WebLogic Server Version:12.1.3.0.0創建了一個身份驗證提供程序,將該jar放在域名,但不會出現在供應商列表,選擇身份驗證提供程序未出現在WebLogic Server中的身份驗證器列表中:12.1.3.0.0

<?xml version="1.0"?> 

<!DOCTYPE MBeanType SYSTEM "commo.dtd"> 

<!-- MBean Definition File (MDF) for the MMR WS Authenticator See documentation at: http://docs.oracle.com/cd/E13212_01/wles/docs42/dvspisec/mdf_ref.html Since it is for an identity asserter, it must extend the weblogic.management.security.authentication.IdentityAsserter mbean. The Name and DisplayName must be the same. They specify the name that will appear on the console for this provider. Set the PeristPolicy to "OnUpdate" so that if an attribute value is changed, the new value is written to disk immediately. See the "Developing Security Services" manual for more info. Note that since this is an xml document, you can't use double quotes directly. Instead you need to use &quot; Note that setting "Writeable" to "false" on an attribute makes the attribute read-only. The default is read-write. --> 

-<MBeanType PersistPolicy="OnUpdate" Extends="weblogic.management.security.authentication.Authenticator" Package="fr.telecom.security.authentication.provider.mbean" Name="MMRWSAuthenticator"> 

<!-- You must set the value of the ProviderClassName attribute (inherited from the weblogic.management.security.Provider mbean) to the name of the java class you wrote that implements the weblogic.security.spi.AuthenticationProvider interface. You can think of the provider's mbean as the factory for your provider's runtime implementation. --> 


<MBeanAttribute Name="ProviderClassName" Default=""fr.telecom.security.authentication.provider.MMRWSAuthenticationProviderImpl"" Preprocessor="weblogic.management.configuration.LegalHelper.checkClassName(value)" Writeable="false" Type="java.lang.String"/> 

<!-- You must set the value of the Description attribute (inherited from the weblogic.management.security.Provider mbean) to a brief description of your provider. It is displayed in the console. --> 


<MBeanAttribute Name="Description" Default=""MMR WS Authenticator"" Writeable="false" Type="java.lang.String"/> 

<!-- You must set the value of the Version attribute (inherited from the weblogic.management.security.Provider mbean) to your provider's version. There is no required format. --> 


<MBeanAttribute Name="Version" Default=""1.0"" Writeable="false" Type="java.lang.String"/> 

</MBeanType> 

這是我的build.xml文件

<?xml version="1.0" encoding="UTF-8"?> 

<!-- 
    This project is not entirely handled by Maven, so be careful when generating the artifact, and use Ant with its default target. 
--> 
<project name="devices-ws-authentication-provider" default="all" basedir="."> 
    <echo> 
    Remember to execute the command below before doing an Ant: 

    %MW_HOME%\wlserver\server\bin\setWLSEnv.cmd 
    </echo> 

    <property name="src-java" value="src/main/java" /> 
    <property name="mbean" value="src/mbean" /> 

    <target name="all" depends="build" /> 

    <target name="build" depends="clean,build.mdf,build.mjf" /> 

    <target name="clean"> 
     <delete includeemptydirs="true" failonerror="false"> 
      <fileset dir="${mbean}" includes="**/*"/> 
     </delete> 
     <delete file="target/devices-ws-authentication-provider-1.0.0-SNAPSHOT.jar" failonerror="false" /> 

     <mkdir dir="target" /> 

     <echo message="Clean finish" /> 
    </target> 

    <!-- helper to build an MDF (mbean definition file) --> 
    <target name="build.mdf"> 
     <java dir="${basedir}" fork="false" classname="weblogic.management.commo.WebLogicMBeanMaker"> 
      <arg line="-files ${mbean}" /> 
      <arg value="-createStubs" /> 
      <arg line="-MDF src/main/resources/TntWSAuthenticator.xml" /> 
     </java> 
     <echo message="Created Supporting Classes" /> 

     <move todir="${src-java}/fr/telecom/security/authentication/provider/mbean" file="${mbean}/TntWSAuthenticatorImpl.java" /> 
     <move todir="${src-java}/fr/telecom/security/authentication/provider/mbean" file="${mbean}//fr/telecom/security/authentication/provider/mbean/TntWSAuthenticatorMBean.java" /> 
    </target> 

    <target name="build.mjf"> 
     <mkdir dir="${mbean}" /> 

     <copy todir="${mbean}"> 
      <fileset dir="src/main/java"> 
       <include name="**/*" /> 
      </fileset> 
      <fileset dir="src/main/resources"> 
       <include name="**/*" /> 
      </fileset> 
     </copy> 

     <java dir="${basedir}" fork="false" classname="weblogic.management.commo.WebLogicMBeanMaker"> 
      <arg line="-MJF target/devices-ws-authentication-provider-1.0.0-SNAPSHOT.jar" /> 
      <arg line="-files ${mbean}" /> 
     </java> 
     <echo message="Mbean JAR created." /> 

     <!-- Do a small cleanup after building the JAR, in order to not have duplicated sources/classes in source paths --> 
     <!-- 
     <delete includeemptydirs="true" failonerror="false"> 
      <fileset dir="${mbean}" includes="fr/telecom/security/authentication/provider/*.java" /> 
      <fileset dir="${mbean}" includes="fr/telecom/domain/**/*.java" /> 
      <fileset dir="${mbean}" includes="commo.dtd" /> 
      <fileset dir="${mbean}" includes="rebel.xml" /> 
      <fileset dir="${mbean}" includes="TntWSAuthenticator.xml" /> 
     </delete> 
     --> 

    </target> 

    <target name="install" depends="build"> 
     <copy todir="${user.home}/devices/lib" file="target/devices-ws-authentication-provider-1.0.0-SNAPSHOT.jar" /> 
    </target> 

</project> 

打開生成的耳朵我看到有一些丟失的文件夾和文件,如

/schemacom_bea_xml/element 
/schemacom_bea_xml/namespace 
/schemacom_bea_xml/system 
/schemacom_bea_xml/type 
/weblogic/ 
+1

Comorr ??貴族!! – Andres

+1

ese peassssso de jar !!!! –

回答

3

WLS提供程序是一個噩夢,我已經開發了兩個,現在我正在使用Spring Security :)來簡化和移植。

嗯,我看了你的build.xml和這對我造成奇怪,但我看到的最明顯的一點就是你所欠缺的下列參數:

<arg line="-targetNameSpace your.namespace.here" /> 

WebLogicMBeanMake螞蟻規則內。嘗試一下,但如果它不起作用,我會建議你重做。我可以爲你提供一些樣品。

編輯

在回答您的意見,我會在這裏包括我已經在實際項目中工作的一個樣本。

這是一個要運行的build.xml文件和。要運行此示例,需要安裝WLS 12c。在運行ant buildAndDeploy之前,您必須運行${WLS_HOME}/server/bin/setWLSEnv.sh腳本來準備環境。

您必須在文件開頭調整全局屬性。

<project name="ldap-db-provider" default="buildAndDeploy" basedir="."> 
    <description>Custom Authentication Provider Build</description> 

    <!-- global properties --> 
    <property name="base.dir" location="." /> 
    <property name="bea.home" location="/opt/weblogic/Oracle/Middleware/Oracle_Home" /> 
    <property name="mbean.maker" location="${bea.home}/wlserver/modules/com.bea.core.mbean.maker_2.1.0.0.jar" /> 
    <property name="wls.home" value="${bea.home}/wlserver" /> 
    <property name="wls.lib.dir" value="${wls.home}/server/lib" /> 
    <property name="mbeantypes.dir" value="${wls.lib.dir}/mbeantypes" /> 
    <property name="jar.file.name" value="your-name-for-the-provider-package.jar" /> 
    <property name="src.dir" value="${base.dir}/src" /> 
    <property name="provider.src.dir" value="${src.dir}/es" /> 
    <property name="build.dir" value="${base.dir}/build" /> 
    <property name="targetNamespace" value="your.target.name.space"/> 
    <property name="mbean.impl.name" value="YouBeanName" /> 
    <property name="mbean.package" value="your/mbean/pacakage/name" /> 

    <target name="updateSources"> 
     <copy todir="${src.dir}/${mbean.package}" flatten="true"> 
      <fileset dir="${build.dir}"> 
       <include name="${mbean.impl.name}Impl.java" /> 
      </fileset> 
     </copy> 

     <copy todir="${src.dir}/${mbean.package}" flatten="true"> 
      <fileset dir="${build.dir}/${mbean.package}"> 
       <include name="**/*.java" /> 
      </fileset> 
     </copy> 
    </target> 

    <target name="buildAndDeploy" depends="clean"> 
     <mkdir dir="${build.dir}" /> 

     <copy todir="${build.dir}" flatten="true"> 
      <fileset dir="${wls.lib.dir}"> 
       <include name="commo.dtd" /> 
      </fileset> 
     </copy> 

     <copy todir="${build.dir}" flatten="true"> 
      <fileset dir="${provider.src.dir}"> 
       <include name="**/*.xml" /> 
       <include name="**/*.java" /> 
      </fileset> 
     </copy> 

     <java 
      classname="weblogic.management.commo.WebLogicMBeanMaker" 
      fork="true" failonerror="true"> 
      <!-- <classpath refid="build.path"/> --> 
      <arg line="-files ${build.dir}" /> 
      <arg value="-createStubs" /> 
      <arg line="-MDF ${build.dir}/${mbean.impl.name}-Mbean.xml" /> 
     </java> 

     <echo message="Created Supporting Classes" /> 

     <java 
      classname="weblogic.management.commo.WebLogicMBeanMaker" 
      fork="true" failonerror="true"> 
      <!-- <classpath refid="build.path"/> --> 
      <arg line="-MJF ${build.dir}/${jar.file.name}" /> 
      <arg line="-targetNameSpace ${targetNamespace}" /> 
      <arg line="-files ${build.dir}" /> 
     </java> 

     <echo message="Created Mbean Jar" /> 

     <!-- Deploy the sample security providers --> 
     <copy todir="${mbeantypes.dir}" flatten="true"> 
      <fileset dir="${build.dir}"> 
       <include name="${jar.file.name}" /> 
      </fileset> 
     </copy> 
    </target> 

    <target name="clean"> 
     <delete quiet="true" dir="${build.dir}" /> 
     <delete> 
      <fileset dir="${src.dir}/${mbean.package}" includes="**/*.java" /> 
     </delete> 
     <delete quiet="true" file="${mbeantypes.dir}/${jar.file.name}" /> 
    </target> 
</project> 

希望它有幫助!

+0

可能你有一些例子嗎? –

+0

是的,但我需要一些時間。 (同時你可以唱... ...從Bonanza_來的七匹馬:D) – malaguna

+0

我不能,我不能!!!!!!!! –