j2ee开发工程师薪资调查

professional9344 2003-06-17 11:20:23
j2ee开发工程师的薪水一定很高吧,我明天要去面试精通j2ee开发的工程师,希望北京地区的j2ee的高手们,踊跃发言,本人先表示感谢,谢谢各位!
...全文
64 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
professional9344 2003-07-02
  • 打赏
  • 举报
回复
http://www.javaresearch.org/article/showarticle.jsp?column=151&thread=3998

http://www.javaresearch.org/dn/JBuilder7-Weblogic7.rar
ouyangdong 2003-06-25
  • 打赏
  • 举报
回复
又这么高嘛?在哪儿,我就是作j2ee的,好像没有这么高哦。我是在大连。收入低。
shiyangking 2003-06-24
  • 打赏
  • 举报
回复
up
wxp400 2003-06-23
  • 打赏
  • 举报
回复
决定了
现在先学学。net
以后i在学java
yeaker 2003-06-23
  • 打赏
  • 举报
回复
有这么高么
你的用j2ee都开发是的是哪些项目呀!
professional9344 2003-06-23
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/article/18%5C18577.shtm
jbuilder7整合websphere的步骤
faqc 2003-06-21
  • 打赏
  • 举报
回复
非常好,
可是帮我一个大忙了,
谢谢!
professional9344 2003-06-20
  • 打赏
  • 举报
回复
http://www.cn-java.com/target/news.php?news_id=188
jboss的安装配置
professional9344 2003-06-20
  • 打赏
  • 举报
回复
http://www.cn-java.com/target/news.php?news_id=2261
pleonheart 2003-06-19
  • 打赏
  • 举报
回复
TKing
professional9344 2003-06-19
  • 打赏
  • 举报
回复
http://www.ccidnet.com/tech/focus/java_little_t/ImplementObserverPattern.zip
inger79 2003-06-19
  • 打赏
  • 举报
回复
surport
snowflying123 2003-06-19
  • 打赏
  • 举报
回复
up
loveyourvv 2003-06-19
  • 打赏
  • 举报
回复
我也想去,呵呵,一块去!!!
airsupporter 2003-06-19
  • 打赏
  • 举报
回复
wo ding
professional9344 2003-06-19
  • 打赏
  • 举报
回复
EntityBean 接口方法
  EjbCreate 方法:当客户端调用 create 方法时,EJB 容器调用相应的ejbCreate 方法。一个Entity组件的ejbCreate 方法要实现下列工作:
  · 插入Entity Bean 的状态到数据库中
  · 初始化实例变量
  · 返回主键。
ejbPostCreate 方法
  对于每一个ejbCreate 方法,开发人员必须在Entity Bean中写一个ejbPostCreate 方法,EJB 容器在调用完ejbCreate 以后,就立即调用ejbPostCreate ,和 ejbCreate 方法不一样,ejbPostCreate 方法可以调用 getPrimaryKey 等方法,通常ejbPostCreate 方法是空的。



  EjbLoad 方法和 ejbStore 方法
  EJB 容器需要维持 Entity Bean 的实例变量与数据库中相应值的同步,这需要调用 ejbLaod 方法和ejbStore 方法。ejbLoad 方法用数据库中的数据刷新变量的值,ejbStore 方法把变量的值写入到数据库中。客户端不能调用  
ejbLoad 方法和ejbStore 方法。
  如果业务处理的方法关系到事物处理,EJB 容器要在业务处理方法调用之前调用 ejbLoad 方法刷新数据,业务处理方法执行之后,EJB 容器又立即调用 ejbStore 方法把数据存储到数据库中。因为 EJB 容器调用ejbLoad方法和ejbStore 方法,开发人员在业务处理方法中不必刷新和存储实例变量的值。
  如果ejbLoad 方法和ejbStore 方法不能在低层数据库中定位 Entity Bean,将执行 javax.ejb.NoSuchEntityException。
  在 AccountEJB 类中,ejbLoad 方法调用 loadRow 方法,loadRow 则发出一个 select 语句从数据库提取数据分配给实例变量;ejbStore 方法调用 storeRow 方法,storeRow 方法则用 update 语句把实例变量的值存储到数据库。代码如下:

  public void ejbLoad(){
    try{
      loadRow();
    }catch (Exception ex){
      throw new EJBException ("ejbLoad:"+ex.getMessage());
    }
  }

  public void ejbStore(){
    try{
      storeRow();
    }catch (Exception ex){
      throw new EJBException ("ejbStore:"+ex.getMessage());
    }
  }

Finder 方法 :
  Finder 方法允许客户端查找 entity bean ,AccountClient 中有三种方法查找entity bean:
    Account jones = home.findByPrimaryKey("836");
    Collection c home.findByLastName("Smith");
    Collection c home.findInRange(20.00,99.00);
  Entity bean 类必须实现相应的方法,并且文件名以ejbFind 前缀开始,如:AccountEJB 类实现 ejbFindByLastName 的方法如下:
  public Collection ejbFinfBylastName(String lastName)
    throw FinderException {
    Collection result;
    Try {
      Result = selectByLastName(lastName);
    } catch (Exception ex) {
      throw new EJBException("ejbFindByLastName" + ex.getMessage());
    }
    if (result.isEmpty()){
      throw new ObjectNotFoundException("No row found.");
    }
    else {
      return result;
    }
  }

应用系统中特定的 finder ,如 ejbFindByLastName 和ejbFindInRange,是可选的,但是必须含有 ejbFindByPrimaryKey 方法,ejbFindByPrimaryKey 方法用主键作参数,用来定位一个 entity bean 的状态数据,下面是 ejbFindByPrimaryKey 方法的代码:
  public String ejbFindByPrimaryKey(String primaryKey)
    throws FinderException {
    boolean result;

    try {
      result = selectByPrimaryKey(primaryKey);
    } catch (Exception ex) {
      throw new EJBException("ejbFindByPrimaryKey: " + ex.getMessage());
    }

    if (result) {
      return primaryKey;
    }
    else {
      throw new ObjectNotFoundException ("Row for id " + primaryKey + " not found.");
    }
  }


  
feiyuegaoshan 2003-06-18
  • 打赏
  • 举报
回复
support
professional9344 2003-06-18
  • 打赏
  • 举报
回复
4. 无状态Session Beans的开发: 通过EJB 图形设计器,生成一个Session Bean,代码如下。
Home接口:
package cacdsystem;
import javax.ejb.*;
import java.util.*;
import java.rmi.*;
public interface VocHome extends javax.ejb.EJBHome {
public Voc create() throws CreateException, RemoteException;
}
Remote接口:
package cacdsystem;
import javax.ejb.*;
import java.util.*;
import java.rmi.*;
public interface Voc extends javax.ejb.EJBObject {
public Collection getVocTechnique() throws RemoteException;
}
bean类:
package cacdsystem;
import javax.ejb.*;
import java.util.*;
public class VocBean implements SessionBean {
SessionContext sessionContext;
TechniquespecHome techniquespecHome;
public void ejbCreate() throws CreateException {
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
try
{
javax.naming.Context context = new javax.naming.InitialContext();
techniquespecHome = (TechniquespecHome)context.lookup("Techniquespec");
}
catch (Exception ex) {
System.out.println("Techniquespecs调用出错!");
throw new EJBException(ex);
}
}
public java.util.Collection getVocTechnique() {
/**@todo Complete this method*/
/**
* 获得全部技术需求项函数!
*/
System.out.println("调用getVocTechnique()!");
java.util.Collection collection = null;
java.util.List results = new ArrayList();
try
{
collection= techniquespecHome.findByTypes();
if(collection.size() > 0)
{
System.out.println(collection.size());
Iterator iter = collection.iterator();
String tempStr = null;
Techniquespec techniqu = null;
while(iter.hasNext())
{
techniqu = (Techniquespec) iter.next();
tempStr = techniqu.getTechniqueitem();
tempStr = charASC.chinTOISO(tempStr);
results.add(tempStr);
}
}
}
catch (Exception ex) {
ex.printStackTrace();
throw new EJBException(ex);
}
return results;
}
}
说明:(1)我们在Session Bean中添加了一个商务方法,getVocTechnique(),以获得techniqueitem中的全部内容。(2)setSessionContext中,我们完成了EJB的一些初始化工作。(3) charASC.chinTOISO是用于中文转换的静态方法,代码如下:
package cacdsystem;
public class charASC
{
static private String results = null;
public charASC()
{
}
static public String chinTOISO(String temp)
{
if(temp == null)
{
results = "";
}
else
{
try
{
results = new String(temp.getBytes("ISO-8859-1"),"gb2312");
results = results.trim();
}
catch(Exception ee)
{
System.out.println("中文转换失败!");
}
}
return results;
}
}
5. JSP页面的开发:针对Session Bean,我编写了一个JSP页面。
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.text.*" %>
<%@page import="java.util.*"%>
<%@page import="java.sql.*" %>
<%@page import="javax.naming.*" %>
<%@page import="java.lang.*" %>
<%@page import="javax.rmi.PortableRemoteObject" %>
<%@page import="javax.ejb.* "%>
<%@page import="cacdsystem.*"%>
<html>
<head>
<title>产品技术需求提取</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form id=form name=form1 method=post>
<input type=hidden id=pageFlag name=pageFlag value='input'>
<table cellSpacing=0 cellPadding=0 width="98%" border=0 align=center >
<tr height=30 class=titleFont>
<td><font color='#0058a5'> 您所在位置:产品技术需求提取</font></td>
</tr>
<tr height=1 class=titleFont>
<td></td>
</tr>
</table>
<table width="98%" border="0" bgcolor='#999999' align=center>
<tr>
<td><b> <font color="#ffffff">产品技术需求提取</font></b></td>
</tr>
</table>
<table width="98%" border="1" align=center bgcolor="#f0f0f0" bordercolor='#ffffff' cellspacing=0 cellpadding=0 class=titleFont>
<tr bgcolor='#e0e8f8'>
<td> </td>
</tr>
<%
InitialContext ctx = new InitialContext();
VocHome vocHome =
(VocHome)PortableRemoteObject.narrow(ctx.lookup("Voc"),VocHome.class);
Voc voc = vocHome.create();
Collection collection = voc.getVocTechnique();
if(collection.size() > 0)
{
Iterator iters = collection.iterator();
int i = 0;
while(iters.hasNext())
{
++i;
%>
<tr>
<td><input type='checkbox' name=<%= "select"+i %>
value=<%= i %>><%= (String)iters.next() %><br></td>
</tr>
<%
}
}
%>
<%
voc.remove();
%>
<tr bgcolor='#e0e8f8' align=middle>
<td>
<p align=left></p> 
</td>
</tr>
<tr align=middle>
<td>
<input type=submit id=submit1 name=submit1 value="提 交">
<input type=reset id=submit1 name=submit value="重 置">
</td>
</tr>
</table>
</form>
</body>
</html>
6. 系统Deploy: 到现在为止,我们实现了Entity Bean、Session Bean、JSP,从而实现了该实例所需要的代码。为使我们测试代码的正确性,我们来Deploy到服务器上。首先,由于在Session Bean中引用了Entity Bean,所以需要申明。
<session>
<display-name>Voc</display-name>
<ejb-name>Voc</ejb-name>
<home>cacdsystem.VocHome</home>
<remote>cacdsystem.Voc</remote>
<ejb-class>cacdsystem.VocBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref> //手工添加的配置描述符代码!
<description />
<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>
</session>
其次,需要将EJB的接口文件拷贝到web-inf\classes目录下。在这里由于是存在package cacdsystem中,需要把4个接口文件拷贝到web-inf\classes\cacdsystem中。第三,将EJB打包成.jar文件,JBuilder 7可以自动完成,记得要包括charASC.class文件。生成.jar后发布到服务器上可以通过JBuilder 7发布,也可以通过WebLogic提供的Builder工具,或者通过Console发布,或者通过将.jar拷贝到applications目录即达到发布的目的。
最后,我们也可以通过把整个EJB、JSP打包成.ear文件,JBuilder工具提供了Wizard。
总结:
整个过程实现了EJB组件开发,从而对EJB有了一定的认识。接下来的文章中,我会继续深入讲述EJB技术涉及到的技术。谢谢大家看完我的写文章,也希望大家写信和我交流。
professional9344 2003-06-18
  • 打赏
  • 举报
回复
Enterprise JavaBeans Distilled
作者:罗时飞(worldheart@263.net)
第二次:
设计实例的深入分析:
要求:
  本文假设读者对EJB技术有一定熟悉,对SQL有一定了解就可以了。由于EJB涉及到的技术很多,尽管每次只讲述一种技术,但各种技术是相关的,所以希望读者谅解,因为这样不是很好组织。
实例背景:
  数据库: SQL Server 2000
  操作系统: Windows 2000
  开发工具; JBuilder 7
  EJB服务器: WebLogic 7.0
机器IP地址,10.11.12.58
实例综述:通过无状态Session Beans得到容器管理的Entity Beans中的数据,然后把无状态Session Beans得到的数据给JSP页面,从而客户可以看到所要的结果。通过这样一种过程使得您知道编写EJB组件是多么简单的事情。
准备工作:
配置好SQL Server 2000的JDBC驱动(微软网站有下载,或者用BEA提供的也可以!该例子中用的是微软的JDBC)、JBuilder 7 + WebLogic 7集成环境,其他的也可以。
开发过程:
1. 配置JDBC数据源:这个过程包括两个步骤,首先配置连接池(Connection Pools)。(为什么采用连接池:开发人员不想编写Database方面的代码、更换数据库系统变得简单、限制数据库的连接数量、不需要为每个客户建立新连接。这种池的概念在J2EE中有很多地方出现了,比如EJB本身)配置的参数如下:
Name: cacd
URL: jdbc:microsoft:sqlserver://10.11.12.58:1433;user=sa;password=cacd;
Driver ClassName: com.microsoft.jdbc.sqlserver.SQLServerDriver
Initial Capacity: 3
Maximum Capacity: 10
其次,配置JDBC数据源,在Tx Data Sources中配置的参数如下:
Name: cacd
JNDI Name: cacd
Pool Name: cacd(要与前面的相匹配!)
(Tx Data Sources与一般的Data Sources 区别何在?读给读者思考、讨论。)
其中,在URL中,你需要为SQL Server 2000配置一个用户名sa,密码为cacd,因为这里用的是Type 4的JDBC,所以需要将SQL Server 2000的用户认证修改为:NT+SQL Server 2000混合认证。

2. 数据库的建立:Entity Beans代表了Database中的数据,所以需要数据库支持,但一般情况下,我们知道,可以根据容器管理的Entity Beans导出SQL DDL。另一方面,可以根据SQL DDL生成容器管理的Entity Beans。两种方法都可以。比如JBuilder 7两种方法都提供了。但我想,信息模型(数据库)的建立在编码之前就应该存在,所以建议采用第二种办法。当然有些时候第一种会较为合理些,因为并不是表中所有的字段都会映射到Entity Beans中。该例子中建立了这样这样一个Table:
/*===================================================*/
/* Table : techniquespec */
/*===================================================*/
create table techniquespec (
techniqueitem char(100) not null,
units char(10) null,
minvalue decimal(16,6) null,
maxvalue decimal(16,6) null,
types char(1) null,
signon char(1) null,
constraint PK_TECHNIQUESPEC primary key (techniqueitem)
)
其中,开发人员在建表的过程中,不需要手工去写SQL DDL语句,一般都可以借助于工具进行,比如PowerDesigner、ERWin等工具。用用就会了,不要对工具产生不好的情绪,但前提是你熟悉数据库理论。

用户建好Table后,可以填入数据,中文的也可以。

3. 容器管理的Entity Beans的开发:JBuilder对EJB开发支持的比较好,提供了图形化的方式。由于我们已经建立好了Database,前面的techniquespec表,我们可以借助于Import Schema From Database,将SQL DLL引入进来。(由于这里不能贴出操作图片,所以只能用文字说明梗概,大家在设计过程中有什么问题,可以发邮件给我,我尽力而为。)在这个过程中,一定要注意JNDI的名字和数据源中的JNDI要一致。得到SQL DLL后,我们可以根据techniquespec表生成CMP 2.0 Entity Beans,在这里我们采用LocalHome访问Entity Beans,为什么采用?后续文章中都会详细阐述。现在想返回表techniquespec中列techniqueitem的所有内容。首先,真假一个findByTypes Finder方法,EJB QL语句为: SELECT OBJECT(p) from Techniquespec AS p,其中返回值为Collection。下面给出代码。
LocalHome接口:
package cacdsystem;
import javax.ejb.*;
import java.util.*;
public interface TechniquespecHome extends javax.ejb.EJBLocalHome
{
public Techniquespec create(String techniqueitem) throws CreateException;
public Collection findByTypes() throws FinderException;//添加的Finder方法
public Techniquespec findByPrimaryKey(String techniqueitem)
throws FinderException;
}
Local接口:
package cacdsystem;
import javax.ejb.*;
import java.util.*;
import java.math.*;
public interface Techniquespec extends javax.ejb.EJBLocalObject
{
public String getTechniqueitem();
public void setUnits(String units);
public String getUnits();
public void setMinvalue(BigDecimal minvalue);
public BigDecimal getMinvalue();
public void setMaxvalue(BigDecimal maxvalue);
public BigDecimal getMaxvalue();
public void setTypes(String types);
public String getTypes();
public void setSignon(String signon);
public String getSignon();
}
bean类:
package cacdsystem;
import javax.ejb.*;
abstract public class TechniquespecBean implements EntityBean
{
EntityContext entityContext;
public java.lang.String ejbCreate(java.lang.String techniqueitem)
throws CreateException {
setTechniqueitem(techniqueitem);
return null;
}
public void ejbPostCreate(java.lang.String techniqueitem) throws CreateException {
}
public void ejbRemove() throws RemoveException {
}
public abstract void setTechniqueitem(java.lang.String techniqueitem);
public abstract void setUnits(java.lang.String units);
public abstract void setMinvalue(java.math.BigDecimal minvalue);
public abstract void setMaxvalue(java.math.BigDecimal maxvalue);
public abstract void setTypes(java.lang.String types);
public abstract void setSignon(java.lang.String signon);
public abstract java.lang.String getTechniqueitem();
public abstract java.lang.String getUnits();
public abstract java.math.BigDecimal getMinvalue();
public abstract java.math.BigDecimal getMaxvalue();
public abstract java.lang.String getTypes();
public abstract java.lang.String getSignon();
public void ejbLoad()
{
}
public void ejbStore()
{
}
public void ejbActivate()
{
}
public void ejbPassivate()
{
}
public void unsetEntityContext()
{
this.entityContext = null;
}
public void setEntityContext(EntityContext entityContext)
{
this.entityContext = entityContext;
}
}
professional9344 2003-06-18
  • 打赏
  • 举报
回复
linden28() 看来你对 EJB2.0 localbean 不熟悉,你所说的是EJB 1.1 cmp or bmp,
眼下流行的是 ejb2.0 jms ,当然我现在北京还没有发现有公司作这个业务的,你需要先熟悉
一下j2ee的消息处理机制,然后再发言。
加载更多回复(9)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧