锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import J2EE鎶鏈殑鐖櫕.util.Collection;
import J2EE鎶鏈殑鐖櫕.util.List;
public interface IMathService {
/**
* 鍔?br />
* @param a
* @param b
* @return
*/
public int add(int a,int b);
/**
* 鍑?br />
* @param a
* @param b
* @return
*/
public int sub(int a,int b);
/**
涓婁紶浜岃繘鍒舵枃浠?br />
*/
public String sendFile(String fileName,byte[] file );
}
瀹炵幇 implements
import J2EE鎶鏈殑鐖櫕.io.File;
import J2EE鎶鏈殑鐖櫕.io.FileOutputStream;
import J2EE鎶鏈殑鐖櫕.sql.Connection;
import J2EE鎶鏈殑鐖櫕.sql.ResultSet;
import J2EE鎶鏈殑鐖櫕.sql.Statement;
import J2EE鎶鏈殑鐖櫕.util.ArrayList;
import J2EE鎶鏈殑鐖櫕.util.Collection;
import J2EE鎶鏈殑鐖櫕.util.List;
import com.newsoft.oa.bean.User;
import com.newsoft.oa.uitl.Connector;
import com.thoughtworks.xstream.XStream;
public class MathServiceImpl implements IMathService{
public int add(int a,int b){
return a+b;
}
public int sub(int a,int b){
return a-b;
}
public String getWelComeStr(String name){
return "hi "+name+"! 嬈㈣繋浣?;
}
public List getUsers(){
List l=new ArrayList();
l.add("name");
l.add("password");
l.add("sex");
return l;
}
public String sendFile(String fileName, byte[] filebytes) {
try{
String path="";
if(filebytes!=null&&filebytes.length>0){
File file=new File("/"+fileName);
file.createNewFile();
FileOutputStream fos=new FileOutputStream(file);
fos.write(filebytes);
fos.close();
path=file.getAbsolutePath();
System.out.println(path);
file=null;
}
return path;
}catch(Exception ex){
return "false";
}
}
}
閰嶇疆鏂囦歡
鏀懼湪 Classes/META-INF/xfire/service.xml錛涢噷闈?br />
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>MathService</name>
<namespace>newsoft/oa/MathService</namespace>
<serviceClass>
com.newsoft.oa.services.IMathService
</serviceClass>
<implementationClass>
com.newsoft.oa.services.MathServiceImpl
</implementationClass>
</service>
</beans>
鍏跺疄鏄熼壌浜哠pring鐨勫啓娉曪紝鐢ㄨ繃Spring涓嶄細瀵圭潃闄岀敓錛岋紙Application-context.xml錛?br />
WEB-XML鍔犱笂
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
//鑷繁閲嶅啓鍒嗛〉鎷挎暟鎹殑鏂規硶錛岃繖鏍鋒暟鎹鏁頒細姝g‘鐜板疄
var ds = new Ext.nd.data.DominoViewStore({
proxy: new Ext.data.HttpProxy({
url: Ext.nd.extndUrl+'GetView?OpenAgent',
method: "GET"
}),
baseParams: {db: "/"+Ext.nd.Session.CurrentDatabase.FilePath, vw: this.viewName },
reader: viewEntryReader,
remoteSort: true
});
銆傘傘傘傘傘傘傘傘傘傘傘傘傘傘?br />
getView鐨刲s浠g悊濡備笅
'GetView:
Option Public
Option Explicit
Sub Initialize
%REM
This agent can be called from the web to search any view and return results in the
same format as the ?ReadViewEntries command. This was created for use with the
NotesView2 class v1.3 and above.
%END REM
On Error Goto ErrorHandler
Dim session As New NotesSession
Dim dbSearch As NotesDatabase
Dim colEntries As NotesViewEntryCollection
Dim vwSearch As NotesView
Dim entryResult As NotesViewEntry
Dim docCurrent As NotesDocument
Dim docResult As NotesDocument
Dim col As NotesViewColumn
Dim strQuery As String
Dim strDb As String
Dim strView As String
Dim strCategory As String
Dim intMax As Integer
Dim lngCount As Long, i As Long
Dim lngStart As Long, lngEnd As Long
Dim strParameters As String
Dim lngResults As Long
Dim x,n As Integer
Dim xmlStr,resortdescending ,resortascending As String
Dim nav As NotesViewNavigator
'start the xml document
Print "Content-Type:text/xml;"
Print "<?xml version=""1.0"" encoding=""gb2312""?>"
'first we get the search parameters out of the querystring
'db, vw, query, searchmax, count, and start
Set docCurrent = session.DocumentContext
strParameters = docCurrent.GetItemValue("Query_String")(0)
'Msgbox strParameters
strDb = GetParameter("db",strParameters)
strDb = Replace(Strright(strDb,"/"),"/","\")
strView = GetParameter("vw",strParameters)
strQuery = GetParameter("query",strParameters)
strCategory= GetParameter("RestrictToCategory",strParameters)
resortdescending=GetParameter("resortdescending",strParameters)
resortascending=GetParameter("resortascending",strParameters)
intMax = 0
If Isnumeric(GetParameter("searchmax",strParameters)) Then intMax = Cint(GetParameter("searchmax",strParameters))
lngCount = 20
If Isnumeric(GetParameter("count",strParameters)) Then lngCount = Clng(GetParameter("count",strParameters))
lngStart = 1
If Isnumeric(GetParameter("start",strParameters)) Then lngStart = Clng(GetParameter("start",strParameters))
'now we get the view to search
Set dbSearch = session.GetDatabase("",strDb,False)
Set vwSearch = dbSearch.GetView(strView)
'Msgbox resortdescending +" && "+resortascending
'now we run the search
If strCategory="" Then
Set colEntries = vwSearch.AllEntries
Else
Set colEntries = vwSearch.GetAllEntriesByKey(strCategory)
End If
lngResults=colEntries.Count
'now we spit out the results
Print "<viewentries toplevelentries=""" & Cstr(lngResults) & """>"
'set the starting point for the loop
If lngStart > lngResults Then lngStart = lngResults
'set the ending point for the loop
lngEnd = lngStart + lngCount - 1
If lngEnd > lngResults Then lngEnd = lngResults
'now loop through the appropriate subset of results and print out a viewentry tag for each one
i = lngStart
While i <= lngEnd
If i = lngStart Then
Set entryResult = colEntries.GetNthEntry(i)
Else
Set entryResult = colEntries.GetNextEntry(entryResult)
End If
If Not entryResult Is Nothing Then
'If Not entryResult Is Nothing And entryResult.IsValid Then
'If entryResult.IsDocument Then
Set docResult = entryResult.Document
Print "<viewentry position=""" & Cstr(i) & """ unid=""" & Cstr(docResult.universalID) & """ noteid=""" & Cstr(docResult.NoteID) & """ siblings=""" & Cstr(entryResult.SiblingCount) & """>"
x = 0
n=0
Forall value In entryResult.ColumnValues
Set col=vwSearch.Columns(x)
If Not col.isCategory And Not col.IsHidden Then
Print "<entrydata columnnumber=""" & Cstr(n) & """ name=""" & col.itemName & """>"
Print "<text>" & XMLEscape(GetValue(value,Cstr(docResult.universalID))) & "</text>"
Print "</entrydata>"
n=n+1
End If
x = x + 1
End Forall
Print "</viewentry>"
'End If
End If
i = i + 1
Wend
AtEnd:
Print "</viewentries>"
''''Msgbox xmlStr
Print xmlStr
vwSearch.Clear
Set dbSearch=Nothing
Set vwSearch=Nothing
Exit Sub
ErrorHandler:
Msgbox "<error>" & "Error in ($Ext.nd.SearchView): " & Error & "---at " & Erl & "</error>"
Print "<error>" & "Error in ($Ext.nd.SearchView): " & Error & "---at " & Erl & "</error>"
Resume AtEnd
End Sub
Function GetParameter(strParamName As String, strQuery As String) As String
'this gets a parameter out of a querystring
Dim i As Integer
Dim s As String
Dim v As Variant
GetParameter = ""
i = Instr(Ucase(strQuery),"&" & Ucase(strParamName) & "=")
If i <> 0 Then
s = Strright(Mid(strQuery, i),"=")
If Instr(s, "&") Then
s = Strleft(s, "&")
End If
v = Evaluate("@UrlDecode(""Domino""; """ & s & """)")
GetParameter = Cstr(v(0))
End If
End Function
Function XMLEscape(strValue As String) As String
'this escapes a string so it can be printed out to xml safely
strValue = Replace(strValue, "&" , "&")
strValue = Replace(strValue, "<" , "<")
strValue = Replace(strValue, ">" , ">")
XMLEscape = strValue
End Function
Function GetValue(strValue As Variant,id As String) As String
On Error Goto sErr
'Forall vs In strValue
' Msgbox "vs=" & Cstr(vs)
'End Forall
GetValue=Cstr(strValue)
Exit Function
sErr:
GetValue="鏂囨。" & id
Exit Function
End Function
鏈夊叴瓚e彲浠ョ爺絀朵笅 ext-js鐨凙JAX妗嗘灦錛岀‘瀹炲緢鏈夎叮
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
public class LdapConnector {
public final static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
public final static String HOST_URL = "ldap://128.8.1.8:389";
public static LdapConnector connector=null;
private DirContext ctx;
private Hashtable<String,String> env;
public LdapConnector(String principal, String credentials) {
env = new Hashtable();
try {
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);
env.put(Context.PROVIDER_URL, HOST_URL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, principal);
env.put(Context.SECURITY_CREDENTIALS, credentials);
ctx = new InitialDirContext(env);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public DirContext getDirContext(){
return ctx;
}
public static SearchControls getSearchControls(){
SearchControls constraints;
constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
return constraints;
}
public static LdapConnector init(){
synchronized (LdapConnector.class) {
if(connector==null)
connector=new LdapConnector("lilb","1");
}
return connector;
}
}
嫻嬭瘯綾伙細
import J2EE鎶鏈殑鐖櫕.util.ArrayList;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.SearchResult;
public class LdapText {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
String cn="";
String dn="";
String filter="";
String searchBase="";
NamingEnumeration<SearchResult> results;
DirContext ctx =LdapConnector.init().getDirContext();
//鍏堟嬁CN鍊?================
searchBase="";
filter ="(uid=lilb)";
results =
ctx.search(searchBase, filter, LdapConnector.getSearchControls());
while (results != null && results.hasMore()) {
SearchResult sr2 = results.next();
cn=(String)sr2.getAttributes().get("cn").get();
dn=sr2.getName();
System.out.println(dn);
}
//=======================
J2EE鎶鏈殑鐖櫕.util.List<String> uidList=new ArrayList<String>();
filter =
"(&(objectClass=dominoGroup)(cn=IT浜嬩笟閮?)";
results =
ctx.search(searchBase, filter, LdapConnector.getSearchControls());
while (results != null && results.hasMore()) {
SearchResult sr = results.next();
System.out.println(sr.getName());
Attributes attrs = sr.getAttributes();
NamingEnumeration attrsEnum=attrs.get("member").getAll();
System.out.println("緇勭粐閲岀殑浜哄憳鏈?錛?+attrs.get("member"));
while (attrsEnum != null && attrsEnum.hasMore()) {
String str=(String)attrsEnum.next();
System.out.println(str.equalsIgnoreCase(dn));
NamingEnumeration<SearchResult> resultsPerson =
ctx.search(str, "(objectClass=*)", LdapConnector.getSearchControls());//鏍規嵁DN錛屽啀閲嶆柊鏌ユ壘
while (resultsPerson != null && resultsPerson.hasMore()) {
SearchResult srPerson = resultsPerson.next();
System.out.println(srPerson.getAttributes().get("cn").get());//閲岄潰浜虹殑CN
System.out.println(srPerson.getAttributes().get("uid").get()+"@");//閲岄潰浜虹殑UID
uidList.add(srPerson.getAttributes().get("uid").get().toString().toLowerCase());
}
}
System.out.println("鏈粍緇囨槸鍚﹀瓨鍦ㄨ繖鐢ㄦ埛 :"+uidList.contains("lilb"));
}
}
}
浜庢搗 閮戞櫤 钁f柟鍗?br> 閭典匠涓
鍛ㄦ搗瀹?nbsp;
瀛欒 鏉庝紵宄?鍐惂搴?瀛欑戶嫻?/p>
鍓嶆彁璇曟崲浜嗛鑰佹暀緇?img src ="http://www.aygfsteel.com/nikon/aggbug/109620.html" width = "1" height = "1" />
<filter>聽
聽聽聽聽<filter-name>CASFilter</filter-name>
聽聽聽聽<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
聽聽聽聽<init-param>
聽聽聽聽聽聽聽聽<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
聽聽聽聽聽聽聽聽<param-value>https://localhost:8443/cas/login</param-value>
聽聽聽聽</init-param>
聽聽聽聽<init-param>
聽聽聽聽聽聽聽聽<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
聽聽聽聽聽聽聽聽<param-value>https://localhost:8443/cas/proxyValidate</param-value>
聽聽聽聽</init-param>
聽聽聽聽<init-param>
聽聽聽聽聽聽聽聽<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
聽聽聽聽聽聽聽聽<param-value>localhost:8080</param-value>
聽聽聽聽</init-param>
</filter>
<filter-mapping>
聽聽聽聽<filter-name>CASFilter</filter-name>
聽聽聽聽<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
6.鍚姩tomcat聽!,CAS.war鏂囦歡琚嚜鍔ㄥ湪webapps涓嬮噴鏀懼嚭CAS鐩綍
榪涘叆http://localhost:8080/servlets-examples,闅忎究鐐瑰嚮涓涓狤xecute,緋葷粺聽琚嚜鍔ㄨ漿鍙戝埌CAS鐨勭櫥闄嗛〉闈?
杈撳叆鐩稿悓鐨勭敤鎴峰悕鍜屽瘑鐮侊紝涔嬪悗璺寵漿鍥炲師鏉ラ〉闈?br />娉ㄦ剰錛?br />鍦ㄥ埗浣滀竴涓嚜絳懼悕鐨刢redential浜?聽鍦ㄧ敓鎴恔eystore鏂囦歡鐨勬椂鍊欏瘑鐮佹槸:changeit(榪欐槸tomcat榛樿鐨?,浣犵殑鍚嶅瓧涓瀹氳鏄?localhost,褰撶劧榪欐槸浣犻渶瑕佹妸CAS聽client鍜孋AS聽server鏀懼湪鍚屼竴鍙版満鍣ㄤ笂榪涜嫻嬭瘯鐢ㄧ殑.
浜洪棿闅忓鏈変箻闄?/span>
浣庡ご涓鎷滃睜緹婅
涓囦簨嫻簯榪囧お铏?br />
http://googlechinablog.com/2006/08/google.html
聽聽聽聽聽聽聽 <property name="hibernate.query.substitutions">false 0, true 1</property>
聽聽聽聽聽聽聽 <!-- c3p0 connection pooling properties -->
聽聽聽聽聽聽聽 <property name="hibernate.c3p0.min_size">1</property>
聽聽聽聽聽聽聽 <property name="hibernate.c3p0.max_size">3</property>
聽聽聽聽聽聽聽 <!-- other hibernate properties -->
聽聽聽聽聽聽聽 <property name="hibernate.show_sql">true</property>
聽聽聽聽聽聽聽 <!-- <property name="hbm2ddl.auto">update</property> -->
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 <mapping resource="com/opensymphony/workflow/spi/hibernate3/HibernateCurrentStep.hbm.xml"/>
聽聽聽<mapping resource="com/opensymphony/workflow/spi/hibernate3/HibernateHistoryStep.hbm.xml"/>
聽聽聽<mapping resource="com/opensymphony/workflow/spi/hibernate3/HibernateWorkflowEntry.hbm.xml"/>
聽聽聽 </session-factory>
</hibernate-configuration>
聽<!--聽 ========================聽 dao helper ,set to service,transation ============聽 -->
聽<bean id="transactionManager"
聽聽class="org.springframework.orm.hibernate3.HibernateTransactionManager">
聽聽<property name="sessionFactory">
聽聽聽<ref bean="sessionFactory" />
聽聽</property>
聽</bean>
聽
聽<!--聽 ========================聽 end dao setup ============聽 -->
聽
聽<!--聽 ============================================================================聽 -->
聽<!--聽 ======================== 緋葷粺涓氬姟灞?=======================================聽 -->
聽<!--聽 ============================================================================聽 -->
聽<!--聽 ========================聽 begin to setup dgsei System Service ============聽 -->
聽<!-- ************聽 鍏叡transactionManager proxy 緇ф壙鍚庡氨鑳芥湁浜嬪姟綆$悊銆鏂規硶鏄痵et parent="baseServiceProxy"聽 === -->
聽<bean id="baseServiceProxy" lazy-init="true"
聽聽class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
聽聽<property name="transactionManager">
聽聽聽<ref local="transactionManager" />
聽聽</property>
聽聽<property name="transactionAttributes">
聽聽聽<props>
聽聽聽聽<prop key="modify*">
聽聽聽聽聽PROPAGATION_REQUIRED,-com.newsoft.notMoneyException
聽聽聽聽</prop>
聽聽聽聽<prop key="update*">
聽聽聽聽聽PROPAGATION_REQUIRED,-Exception
聽聽聽聽</prop>
聽聽聽聽<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
聽聽聽聽<prop key="create*">
聽聽聽聽聽PROPAGATION_REQUIRED,-Exception
聽聽聽聽</prop>
聽聽聽聽<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
聽聽聽聽<prop key="delete*">
聽聽聽聽聽PROPAGATION_REQUIRED,-Exception
聽聽聽聽</prop>
聽聽聽聽<prop key="remove*">
聽聽聽聽聽PROPAGATION_REQUIRED,-Exception
聽聽聽聽</prop>
聽聽聽聽<prop key="do*">PROPAGATION_REQUIRED,-Exception</prop>
聽聽聽聽<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
聽聽聽聽<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
聽聽聽聽<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
聽聽聽聽<!-- prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
聽聽聽聽聽<prop key="someOtherBusinessMethod">PROPAGATION_MANDATORY</prop-->
聽聽聽</props>
聽聽</property>
聽</bean>
聽<!--聽 =============聽聽 end ==== -->
聽聽聽 <!--
聽聽OS
聽-->
聽<bean id="workflowStore"
聽聽class="com.opensymphony.workflow.spi.hibernate3.SpringHibernateWorkflowStore" >
聽聽<property name="sessionFactory">
聽聽聽<ref bean="sessionFactory" />
聽聽聽 </property>
聽<property name="propertySetDelegate">
聽聽<bean id="propertySetDelegate"
聽聽class="com.opensymphony.workflow.util.PropertySetDelegateImpl" />
聽</property>
聽聽 </bean>
聽<bean id="workflowFactory"
聽聽class="com.opensymphony.workflow.spi.hibernate.SpringWorkflowFactory"
聽聽init-method="init">
聽聽<property name="resource">
聽聽聽<value>workflows.xml</value>
聽聽</property>
聽</bean>
聽<bean id="workflowConfiguration"
聽聽class="com.opensymphony.workflow.config.SpringConfiguration">
聽聽<property name="store">
聽聽聽<ref local="workflowStore" />
聽聽</property>
聽聽<property name="factory">
聽聽聽<ref local="workflowFactory" />
聽聽</property>
聽</bean>
聽<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
聽聽聽聽聽聽聽 <property name="transactionManager">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <ref local="transactionManager" />
聽聽聽聽聽聽聽 </property>
聽聽聽聽聽聽聽 <property name="transactionAttributes">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <props>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <prop key="*">PROPAGATION_REQUIRED</prop>
聽聽聽聽聽聽聽聽聽聽聽聽聽 </props>
聽聽聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <bean id="workflowTarget" class="com.opensymphony.workflow.basic.BasicWorkflow" singleton="false">
聽聽聽聽聽聽聽 <constructor-arg>
聽聽聽聽聽聽聽聽聽聽聽聽聽 <value>admin</value>
聽聽聽聽聽聽聽 </constructor-arg>
聽聽聽聽聽聽聽 <property name="configuration">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <ref local="workflowConfiguration" />
聽聽聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <bean id="workflow" class="org.springframework.aop.framework.ProxyFactoryBean">
聽聽聽聽聽聽聽 <property name="singleton">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <value>false</value>
聽聽聽聽聽聽聽 </property>
聽聽聽聽聽聽聽 <property name="proxyInterfaces">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <value>com.opensymphony.workflow.Workflow</value>
聽聽聽聽聽聽聽 </property>
聽聽聽聽聽聽聽 <property name="interceptorNames">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <list>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <value>transactionInterceptor</value>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <value>workflowTarget</value>
聽聽聽聽聽聽聽聽聽聽聽聽聽 </list>
聽聽聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽
聽<!-- OS END -->
聽
聽<!-- 鐩戠涓績鍒涘緩璁板綍 -->
聽<!-- dao鐨勫疄鐜奧?sessionFactory鐢ㄧ殑鏄墠闈pring瀹氫箟鐨?->
聽<bean id="maintRecordDao"
聽聽class="com.newsoft.equipmentMaintenance.dao.MaintRecordDaoImpl">
聽聽<property name="sessionFactory" ref="sessionFactory" />
聽</bean>
聽<!-- BO鐨勬帴鍙?target 鏄寚鍚態O瀹炵幇綾籭d parent鏄簨鐗╀唬鐞嗙被鐨処D ,proxyInterfaces鏄浠g悊鐨勬帴鍙g被-->
聽<bean id="maintRecordService" parent="baseServiceProxy">
聽聽<property name="target">
聽聽聽<ref local="maintRecordImpl" />
聽聽</property>
聽聽<property name="proxyInterfaces">
聽聽聽<value>
聽聽聽聽com.newsoft.equipmentMaintenance.bo.maintenanceRecord.MaintRecordService
聽聽聽</value>
聽聽</property>
聽</bean>
聽<!-- BO鐨勫疄鐜?MaintRecordDao 鏄寚鍚慏AO鎺ュ彛綾籭d-->
聽<bean id="maintRecordImpl"
聽聽class="com.newsoft.equipmentMaintenance.bo.maintenanceRecord.impl.MaintRecordImpl">
聽聽<property name="maintRecordDao">
聽聽聽<ref local="maintRecordDao" />
聽聽</property>
聽聽<property name="workflow">
聽聽聽<ref local="workflow" />
聽聽</property>
聽</bean>
聽
</beans>
聽