高分:JBoss与sqlserver2000的配置问题??????????????

skiski 2003-08-22 03:15:50
在部署EJB时,报错,我估计是JBoss与sqlserver2000的配置问题,因为以前用Oracle时也是这样配置的,也没问题,但不知JBoss与sqlserver2000是怎么配的????
报错信息是:
15:01:28,450 INFO [MainDeployer] Undeploying file:/D:/JBoss/server/default/deploy/TableSequence.jar

15:01:28,450 INFO [EjbModule] Stopping

15:01:28,450 INFO [StatelessSessionContainer] Stopping

15:01:28,450 INFO [StatelessSessionInstancePool] Stopping

15:01:28,450 INFO [StatelessSessionInstancePool] Stopped

15:01:28,450 INFO [StatelessSessionContainer] Stopped

15:01:28,561 INFO [EjbModule] Stopped

15:01:28,571 INFO [EjbModule] Destroying

15:01:28,581 INFO [StatelessSessionContainer] Destroying

15:01:28,581 INFO [StatelessSessionInstancePool] Destroying

15:01:28,581 INFO [StatelessSessionInstancePool] Destroyed

15:01:28,581 INFO [StatelessSessionContainer] Destroyed

15:01:28,581 INFO [EntityContainer] Destroying

15:01:28,581 INFO [EntityInstancePool] Destroying

15:01:28,581 INFO [EntityInstancePool] Destroyed

15:01:28,591 INFO [EntityContainer] Destroyed

15:01:28,591 INFO [EjbModule] Destroyed

15:01:28,641 INFO [EJBModule] destroy(), remove EJB-Module: jboss.management.local:J2EEApplication=null,J2EEServer=Local,j2eeType=EJBModule,name=TableSequence.jar

15:01:28,671 WARN [DeploymentInfo] Could not delete directory file:/D:/JBoss/server/default/tmp/deploy/server/default/deploy/TableSequence.jar/47.TableSequence.jar restart will delete it

15:01:28,671 INFO [MainDeployer] Undeployed file:/D:/JBoss/server/default/deploy/TableSequence.jar

15:01:28,671 INFO [MainDeployer] Starting deployment of package: file:/D:/JBoss/server/default/deploy/TableSequence.jar

15:01:30,373 INFO [EjbModule] Creating

15:01:30,393 INFO [EjbModule] Deploying SequenceGeneratorEJB

15:01:30,443 INFO [EjbModule] Deploying getSequenceSession

15:01:30,543 INFO [EntityContainer] Creating

15:01:30,563 INFO [EntityInstancePool] Creating

15:01:30,563 INFO [EntityInstancePool] Created

15:01:30,563 INFO [EntityContainer] Created

15:01:30,573 INFO [StatelessSessionContainer] Creating

15:01:30,593 INFO [StatelessSessionInstancePool] Creating

15:01:30,593 INFO [StatelessSessionInstancePool] Created

15:01:30,593 INFO [StatelessSessionContainer] Created

15:01:30,593 INFO [EjbModule] Created

15:01:30,593 INFO [EjbModule] Starting

15:01:30,593 INFO [EntityContainer] Starting

15:01:31,114 ERROR [EntityContainer] Starting failed

org.jboss.deployment.DeploymentException: Error while fixing table name; - nested throwable: (org.jboss.util.NestedSQLException: Failed to register driver for: com.microsoft.jdbc.sqlserver.SQLServerDriver; - nested throwable: (java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver); - nested throwable: (org.jboss.resource.JBossResourceException: Failed to register driver for: com.microsoft.jdbc.sqlserver.SQLServerDriver; - nested throwable: (java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver)))

at org.jboss.ejb.plugins.cmp.jdbc.SQLUtil.fixTableName(SQLUtil.java:68)

at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.<init>(JDBCEntityBridge.java:119)

at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.initStoreManager(JDBCStoreManager.java:438)

at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:372)

at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:170)

at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:339)

at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)

at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)

at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:966)

at $Proxy12.start(Unknown Source)

at org.jboss.system.ServiceController.start(ServiceController.java:392)

at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)

at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)

at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)

at $Proxy44.start(Unknown Source)

at org.jboss.ejb.EjbModule.startService(EjbModule.java:329)

at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)

at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)

at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:966)

at $Proxy12.start(Unknown Source)

at org.jboss.system.ServiceController.start(ServiceController.java:392)

at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)

at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)

at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)

at $Proxy19.start(Unknown Source)

at org.jboss.ejb.EJBDeployer.start(EJBDeployer.java:540)

...全文
149 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Morgan_ma 2003-08-22
  • 打赏
  • 举报
回复
法。

配置JBoss 2.4

遵照配置JBoss2.1和2.2的指导,但是将org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl
替换为org.jboss.pool.jdbc.xa.wrapper.XADataSourceImpl。

配置JBoss2.1和2.2
告诉JBoss新的JDBC驱动程序
在安装好MS SQL Server JDBC驱动程序后,你需要告诉JBoss你要使用该驱动程序。将该驱动程序添加
到JBoss启动时加载的JDBC清单中。该清单存放在jboss.jcml文件中。该文件可在
%JBOSS_HOME%/conf/<config-name>中找到。对于标准的JBoss发行版本,<config-name>是default而
JBoss-Jetty版本则是jetty。该入口应该是一行用逗号分隔开的JDBC驱动程序名列表。

打开文件,找到以下面的mbean标记开始的入口:
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
驱动程序列表放在名为Drivers的<attribute>子标记中。按如下所示将你的JDBC驱动程序添加到列表
中。

$ 添加Sun JDBC-ODBC桥驱动程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,sun.jdbc.odbc.JdbcOdbcDriver
</attribute>
</mbean>
$ 添加FreeTDS驱动程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,com.internetcds.jdbc.tds.Driver
</attribute>
</mbean>
$ 添加Merant DataDirect Connect JDBC驱动程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,com.merant.datadirect.jdbc.sqlserver.SQLServerDriver
</attribute>
</mbean>
$ 添加i-net OPTA 2000 JDBC驱动程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,com.inet.tds.TdsDriver
</attribute>
</mbean>
$ 添加WebLogic jDriver for Microsoft SQL Server
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,weblogic.jdbc.mssqlserver4.Driver
</attribute>
</mbean>

创建DB连接池
到目前为止,你已经告诉JBoss你的驱动程序。现在建立一个你的EJBBean能够连接的连接池。在本教程中,你将创建
一个名为SQLServerPool的连接池。要创建连接池,先在jboss.jcml文件中定位已下列行开始的mbean入口:
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=DefaultDS">
在你刚在定位的mbean项下面加入如下所给的mbean项。注意这些必须加在结束标记</mbean>后面!!!
$ Sun JDBC-ODBC桥驱动程序连接池声明
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:odbc:jboss_odbc</attribute>
<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ Merant DataDirect Connect JDBC驱动程序连接池声明
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:sqlserver://servername:1433</attribute>
<attribute name="Properties">DatabaseName=DatabaseName</attribute>
<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ i-net OPTA 2000 JDBC驱动程序连接池声明(采用INET数据源)
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool">
<attribute name="DataSourceClass">com.inet.tds.XDataSource</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="Properties">host=ServerName; database=DatabaseName</attribute>
<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ i-net OPTA 2000 JDBC驱动程序连接池声明(采用JBoss数据源)
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:inetdae7:HostName</attribute>
<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ WebLogic jDriver for Microsoft SQL Server连接池声明
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:weblogic:mssqlserver4:DatabaseName@ServerName:1433</attribute>
<attribute name="Properties">user=dbusername; password=dbpassword</attribute>
etc...
</mbean>

检验DB连接池
启动JBoss确保JDBC驱动程序找到并且创建了连接池,如果成功加载JDBC驱动程序将有如下所示的输出
[Transaction manager] Initializing
[Transaction manager] Loaded JDBC-driver:org.hsql.jdbcDriver
[Transaction manager] Loaded JDBC-driver:org.enhydra.instantdb.jdbc.idbDriver
[Transaction manager] Loaded JDBC-driver:sun.jdbc.odbc.JdbcOdbcDriver
[Transaction manager] Loaded JDBC-driver:com.merant.datadirect.jdbc.sqlserver.SQLServerDriver
[Transaction manager] Loaded JDBC-driver:com.inet.tds.TdsDriver
[Transaction manager] Loaded JDBC-driver:weblogic.jdbc.mssqlserver4.Driver
[Transaction manager] Initialized
稍等片刻...连接池的输出
[SQLServerPool] Starting
[SQLServerPool] XA Connection pool SQLServerPool bound to java:/SQLServerPool
[SQLServerPool] Started

配置CMP数据类型映射
配置JBoss使用MS SQL Server连接池作为缺省的数据源,你可以选择下列方法之一:
$ 在你的应用程序的META-INF目录下创建jaws.xml文件重载standardjaws.xml中如下所示的缺省设置
示例 jaws.xml(MS SQL Server CMP数据类型映射)
<?xml version="1.0" encoding="UTF-8"?>
<jaws>
<datasource>java:/SQLServerPool</datasource>
<type-mapping>MS SQLSERVER</type-mapping>
<default-entity>
<remove-table>false</remove-table>
</default-entity>
<type-mappings>
<type-mapping>
<name>MS SQLSERVER</name>

<!-- 请将standardjaws中的"MS SQLSERVER"映射复制到此处 -->

</type-mapping>
</type-mappings>
</jaws>
$ 改变%JBOSS_HOME%/conf目录下的standardjaws.xml文件中的缺省设置
要改变缺省的数据源和数据类型映射,请对standardjaws.xml文件作如下修改
<?xml version="1.0" encoding="UTF-8"?>
<jaws>

<datasource>java:/SQLServerPool</datasource>
<type-mapping>MS SQLSERVER</type-mapping>
*注: 除了MS SQLSERVER 2000,其它版本都使用MS SQLSERVER。如果你使用的是SQL Server2000, 将
上面的MS SQLSERVER改为MS SQLSERVER2000。

疑难解答
JDBC未装载错误
在启动时显示如下错误:
[JDBC] Could not load driver:sun.jdbc.odbc.JdbcOdbcDrivers
这种错误可能在下列情况出现:
1. jboss.jcml配置文件中的JDBC驱动名称拼写错误。在如上的例子中应该是
sun.jdbc.odbc.JdbcOdbcDriver
2. JDBC驱动程序没有正确的安装 - 它的类文件或.jar文件不在CLASSPATH中。

在启动连接池时JBoss悬停
当JBoss启动时,一系列的信息显示在控制台上。关于连接池的最后信息应该如下所示:
[Hypersonic] Press [Ctrl]+[C] to abort
[InstantDB] Started
[DefaultDS] Starting
[DefaultDS] XA Connection pool DefaultDS bound to java:/DefaultDS
[DefaultDS] Started
[SQLServerPool] Starting
[SQLServerPool] XA Connection pool SQLServerPool bound to java:/SQLServerPool
  首先检查JDBC驱动程序是否正确加载。如果没有正确加载请察看前面的"JDBC未装载错误"部分。如果驱动
正确加载,该错误意味着JBoss不能和你的数据库服务器通讯。该错误可能在以下情形出现:
1. 用于连接数据库的参数拼写错误或遗漏。请检查是否正确的指定了该连接池的主机名,数据库,用户
名,用户口令等。
Morgan_ma 2003-08-22
  • 打赏
  • 举报
回复
1. 安装MS SQL Server的JDBC驱动程序
2. 配置JBoss使用JDBC驱动程序
3. 为CMP指定MS SQL Server数据类型
4. 问题解答

  需要注意的是JBoss应用服务器套件和MS SQL Server都在蓬勃发展。它们的版本都在发行,修订,增添新的特性。这意味着 本文的某些信息对于你的JBoss或MS SQL Server过时了。如果你使用最新的JBoss CVS版本或开发版或MS SQL Server beta版时 更容易出现这种情况。

安装JDBC驱动程序

  在你能够与JBoss(或所有其它Java应用程序)一起使用Microsoft SQL Server之前,你必须取得并安装JDBC驱动程序。现将一些现有的Microsoft SQL Server JDBC驱动程序列在下面。
---------------------------------------------------------------------------------------------------------------
驱动程序 提供者 JDBC 类型 Availability 版本
---------------------------------------------------------------------------------------------------------------
FreeTDS http://www.freetds.org/ Type 4 免费/开放源码
---------------------------------------------------------------------------------------------------------------
Merant
DataDirect http://www.merant.com/ Type 4 商业
Connect JDBC
---------------------------------------------------------------------------------------------------------------
i-net Opta
JDBC http://www.inetsoftware.de/ Type 4 商业 4.10修订版
---------------------------------------------------------------------------------------------------------------
WebLogic
JDriver for Weblogic Type 4 商业
MS SQL Server
---------------------------------------------------------------------------------------------------------------
Atinav
aveConnect http://www.atinav.com/ Type 4 商业
JDBC
---------------------------------------------------------------------------------------------------------------
Sun JDBC-
ODBC Bridge http://java.sun.com Type 4 免费
---------------------------------------------------------------------------------------------------------------

* Sun JDBC-ODBC桥驱动程序和FreeTDS JDBC驱动程序(至少目前2001年4月的版本)不推荐使用于正式的J2EE开发和发布

安装Sun JDBC-ODBC桥驱动程序

  Sun JDBC-ODBC桥驱动程序在Java 2 SDK安装过程中自动安装。安装包为sun.jdbc.odbc。对于所有使用JDBC-ODBC桥的应用程序该包都必须在CLASSPATH中。在本教程中假设Sun JDBC-ODBC桥已经正确的安装在你的系统中。

为了使用Sun JDBC-ODBC桥你需要创建一个ODBC数据源来引用MS SQL Server数据库。本教程中假设已经创建了名为 jboss_odbc
指向某个MS SQLServer数据库的数据源。

安装FreeTDS驱动程序
从http://www.freetds.org下载FreeTDS, 你应该得到了名为freetds_jdbc.snapshot.jar的文件,然后复制到%JBOSS_HOME%/lib/ext
目录下。

安装Merant DataDirect Connect JDBC驱动程序
有两种方法, 你可以选择下列方法之一:
1. 运行Merant安装程序,然后将base.jar, util.jar和sqlserver.jar文件添加到CLASSPATH中。这些文件位于%MERANT_HOME/lib
目录下。
2. 将base.jar, uitl.jar和sqlserver.jar文件从%MERANT_HOME%/lib目录复制到%JBOSS_HOME%/lib/ext目录,推荐采用这种方法。

安装i-net OPTA 2000JDBCdriver
你可以采用下列方法之一:
1. 运行JBoss时将Opta2000.jar文件加入ClASSPATH。
2. 将文件Opta2000.jar复制到%/JBOSS_HOME%/lib/ext目录。这是推荐的方法。

配置JBoss使用JDBC驱动程序
关于配置JBoss使用你的JDBC驱动程序的指导取决于你使用的JBoss版本,请选择适合你的版本的方
程声明:该课程是教学使用,视频内涉及漏洞利用方法,请勿在互联网环境中使用;维护互联网安全,人人有责。实验所需环境:vmware;kali虚拟机一台;windows server一台;有docker环境的Linux虚拟机环境下载地址在购买课程后单独发送 【课程配套资源】1、Python脚本(Margin老师自研,不光能学漏洞,还能学Python,实在是划算)2、与Margin老师实时互动3、免费的CISP-PTE考试技巧指导(Margin老师与CISP-PTE的负责人很熟的,非常多的一手消息^o^)4、Margin老师的内部直播可以优先参加5、Margin老师的课程基于CISP-PTE的知识体系进一步扩展,使课程内容更贴近实战   【课程主要解决问题】1、CSRF、SSRF搞不清楚?2、SSRF原理是什么?危害大小?如何利用SSRF获取主机权限?如果使用Python提高挖洞效率?3、Gopher协议、Dict协议?完全没听过啊,没关系,看完课程后你门清。4、SSRF渗透Redis数据库,Redis客户端和服务器端怎么通信?通信报文是怎么样的?看这里就行。5、SSRF渗透Struts2总是失败?不知道如何编码?不知道如何使用Gopher协议?来这里。6、SSRF表面简单,实则有无数坑,通过视频提高学习效率吧。 【CISP-PTE介绍】1、CISP-PTE是进入网络安全行业的TOP1认证,能帮你梳理完整的网络安全知识体系2、有PTE证书在网络安全公司是免技术笔试的,怎么样?是不是很棒。3、Margin老师的课程基于CISP-PTE的知识体系进一步扩展,使课程内容更贴近实战本课程属于CISP-PTE渗透测试工程师认证体系的课程,但内容更加丰富。CISP-PTE是国内第一个以动手实操为主的网络安全认证,该注册考试是为了锻炼考生世界解决网络安全问题的能力,持续增强我国的网络安全水平和防御能力,促进国内网络防御能力的不断提高。考试内容从多个层面进行,考点和网络安全动态相结合,真实的反应出真实的网络环境中发现的各种问题。如果要考取CISP-PTE证书需要掌握以下内容:1、Web安全基础,注入漏洞、上传漏洞、跨站脚本漏洞、访问控制漏洞、会话管理漏洞哦等。2、中间件的安全知识,如:Apache,IIS,Tomcat,以及 JAVA 开发的中间件 Weblogic,Jboss, Websphere 等,且要了解中间件加固方法,在攻与防的能力上不断提升。3、操作系统安全,包含Windows和Linux操作系统,从账户管理、文件系统权限、日志审计等方面讲解,了解常见的漏洞方式和加固方法。4、数据库安全,包含MSSQL、MYSQL、ORACLE、REDIS数据,了解常用的数据库漏洞和题全方法,保证数据库的安全性。 【关于Margin老师】· Margin/教育系统网络安全保障人员认证首批讲师/高级讲师· 擅长CTF/Web安全/渗透测试 /系统安全· 3年研发/擅长Java/Python/某银行现金循环机业务系统开发者· 曾参与开发网络安全认证教材· 知乎专栏/CISP-PTE渗透测试工程师学习· 4年线下网络安全讲师/2000+线下学员/100000+线上学员

67,513

社区成员

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

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