Name: cacd
URL: jdbc:microsoft:sqlserver://10.11.12.58:1433;user=sa;password=cacd;
Driver: com.microsoft.jdbc.sqlserver.SQLServerDriver
Initial/Max Capacity: 3/10
Name: cacd
JNDI Name: cacd
Pool Name: cacd (必須與連接池一致)
注意:SQL Server 需設為「混合認證」;Tx Data Source 支援分散式事務,普通 Data Source 不支援。
create table techniquespec (
techniqueitem char(100) not null primary key,
units char(10) null,
minvalue decimal(16,6) null,
maxvalue decimal(16,6) null,
types char(1) null,
signon char(1) null
)
建議先建資料表,再由工具(PowerDesigner/ERWin/JBuilder)反向生成 CMP Bean,確保資訊模型先行。
package cacdsystem;
public interface TechniquespecHome extends EJBLocalHome {
Techniquespec create(String techniqueitem) throws CreateException;
Collection findByTypes() throws FinderException; // 自定義 Finder
Techniquespec findByPrimaryKey(String techniqueitem) throws FinderException;
}
public interface Techniquespec extends EJBLocalObject {
String getTechniqueitem(); void setUnits(String u); String getUnits();
void setMinvalue(BigDecimal v); BigDecimal getMinvalue();
void setMaxvalue(BigDecimal v); BigDecimal getMaxvalue();
void setTypes(String t); String getTypes();
void setSignon(String s); String getSignon();
}
abstract public class TechniquespecBean implements EntityBean {
EntityContext entityContext;
public String ejbCreate(String techniqueitem) { setTechniqueitem(techniqueitem); return null; }
public void ejbPostCreate(String techniqueitem) {}
// 抽象 getter/setter 對應 CMP 欄位
public abstract void setTechniqueitem(String v); public abstract String getTechniqueitem();
public abstract void setUnits(String v); public abstract String getUnits();
public abstract void setMinvalue(BigDecimal v); public abstract BigDecimal getMinvalue();
public abstract void setMaxvalue(BigDecimal v); public abstract BigDecimal getMaxvalue();
public abstract void setTypes(String v); public abstract String getTypes();
public abstract void setSignon(String v); public abstract String getSignon();
// 容器回調留空
public void ejbLoad(){} public void ejbStore(){}
public void ejbActivate(){} public void ejbPassivate(){}
public void setEntityContext(EntityContext ctx){ this.entityContext = ctx; }
public void unsetEntityContext(){ this.entityContext = null; }
}
EJB QL:SELECT OBJECT(p) FROM Techniquespec AS p,回傳 Collection。
public interface VocHome extends EJBHome { Voc create() throws CreateException, RemoteException; }
public interface Voc extends EJBObject { Collection getVocTechnique() throws RemoteException; }
public class VocBean implements SessionBean {
SessionContext sessionContext;
TechniquespecHome techniquespecHome;
public void setSessionContext(SessionContext ctx) {
this.sessionContext = ctx;
try {
Context ic = new InitialContext();
techniquespecHome = (TechniquespecHome) ic.lookup("Techniquespec"); // Local JNDI
} catch (Exception ex) { throw new EJBException(ex); }
}
public Collection getVocTechnique() {
Collection coll = techniquespecHome.findByTypes();
List results = new ArrayList();
if (coll != null && coll.size() > 0) {
Iterator it = coll.iterator();
while (it.hasNext()) {
Techniquespec t = (Techniquespec) it.next();
String item = t.getTechniqueitem();
results.add(charASC.chinTOISO(item)); // 中文編碼轉換
}
}
return results;
}
// 其他回調留空...
}
package cacdsystem;
public class charASC {
public static String chinTOISO(String temp) {
if (temp == null) return "";
try {
return new String(temp.getBytes("ISO-8859-1"), "gb2312").trim();
} catch (Exception e) { return temp; }
}
}
<%@ page import="javax.naming.*, javax.rmi.PortableRemoteObject, cacdsystem.*" %>
<%@ page contentType="text/html;charset=gb2312" %>
<html><body>
<%
InitialContext ctx = new InitialContext();
VocHome home = (VocHome) PortableRemoteObject.narrow(ctx.lookup("Voc"), VocHome.class);
Voc voc = home.create();
Collection coll = voc.getVocTechnique();
int i = 0;
for (Iterator it = coll.iterator(); it.hasNext(); ) {
i++;
%>
<tr><td><input type="checkbox" name="select<%=i%>" value="<%=i%>"><%=it.next()%></td></tr>
<% } voc.remove(); %>
</body></html>
<ejb-local-ref> <!-- Session Bean 參照 Entity Bean -->
<ejb-ref-name>Techniquespec</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>cacdsystem.TechniquespecHome</local-home>
<local>cacdsystem.Techniquespec</local>
<ejb-link>Techniquespec</ejb-link>
</ejb-local-ref>
部署步驟:打包 JAR(含介面類、工具類)→ 部署到 WebLogic(Console/Builder/自動部署)→ 可選打包 EAR。