Tech : 傻人配置Jboss4.04 + Tomcat5.0

AF、AG、AR技术解析:从防指纹到增透膜的光学表面处理 在光学与显示领域,表面处理技术是提升用户体验与产品性能的关键。其核心原理在于通过物理或化学方法改变材料表面的微观结构与光学特性。从技术价值看,这些处理能显著改善透光率、抑制反射、增强耐用性,直接影响成像质量、显示清晰度与设备可靠性。应用场景广泛覆盖消费电子、汽车工业、医疗影像及专业摄影等。其中,防指纹(AF)涂层通过降低表面能实现疏油疏水,防眩光(AG)技术利用表面微结构散射光线,而抗反射(AR)镀膜则基于薄膜干涉原理提升透光。本文聚焦AF、AG、AR三大技术,解析其协同机制与工程实践中的选型权衡。 阅读详情

weblogic 9.0实在太慢了,今天尝试了一下配置jboss4.04 + tomcat5.0, 居然通过了,呵呵,愚人自得。。。

JAVA_HOME=d:/jsdk 1.4.2;
TOMCAT_HOME=d:/tomcat;
JBOSS_HOME=d:/JBOSS;
Path= %PATH%;%JAVA_HOME%/bin;%JBOSS_HOME%/bin;%TOMCAT_HOME%/bin
Classpath= %CLASSPATH%;%JAVA_HOME%/lib/*.jar;%JAVA_HOME%/jre/lib/*.jar

只要运行jboss 的run就可以了,自动起tomcat。

三、JBoss的目录结构
1.bin:开始和停止JBoss的地方。
其中有两个主要的批处理文件:run.bat和shutdown.bat。要启动jboss只要执行run.bat文件即可;要停止JBoss必须执行shutdown.bat。
注意,shutdown.bat文件直接执行并不会自动停止JBoss,它必须要输入参数,参数意义如下:
h显示帮助信息;D设置系统属性;-停止处理选项;s停止用JNDI URL指定的远程服务;n通过制定JMX名字来停止服务;a适配到指定的JNDI名称的远程服务;u指定用户名称;p指定用户密码;
S停止服务器;e从虚拟机退出;H暂停。
一般,我们使用S选项来停止服务器。即使执行shutdown.bat -S。

2.docs:放置jboss的例子、测试脚本和各种脚本配置文件的DTD。

3.lib:放置jboss所需要的部分jar包文件。

4.client:放置EJB客户端运行时所需要的jar包。

5.server:放置各启动类型的服务器端EJB配置所需要的文件等。

四、启动并检验

打开IE输入

http://localhost:8080/jmx-concose

如果有页面则表示JBOSS和TOMCAT配置成功

同时转贴一下简单deploy JSP方法:

 一、编写一个最简单的jsp文件
先写一个简单的html,代码如下:
<html>
<body>HelloWorld</body>
</html>
将文件保存为index.jsp,我们暂定存放的目录为C:/jsp。

二、制作war部署文件
1.JDK提供了一个打包工具,就是jdk的bin目录的那个jar.exe应用程序。为了更方便的使用这个程序,我们在系统的path环境变量中增加jdk/bin的路径,这样我们就可以直接访问jar.exe了。

2.对于jar的使用方法,我建议各位直接察看jar的帮助,在这里我就不详细说明了。pass:你问我怎么看帮助?简单,运行一下jar.exe即可:)

3.在我们存放index.jsp的目录,即c:/jsp中执行jar cvf hello.war index.jsp,可以看到在目录中多了一个刚生成的hello.war文件,这个就是我们要部署到jboss中的包文件。它包含了一个网络访问的索引和目录结构。

4.把生成的hello.war拷贝到jboss安装目录/server/default/deploy/下,部署成功。

三、测试jsp
首先,保证jboss已经成功启动。然后,打开浏览器输入网址:http://localhost:8080/hello/。如果页面中显示HelloWorld字样,那么表示发布成功了。成功后,你可以看到地址栏自动变为打开浏览器,输入网址:http://localhost:8080/hello/index.jsp

四、制作并部署SERVLET
还记得上次测试jsp时使用的jar程序吗?这次我们还是用它来生成部署的war文件。
在c:/servlet下执行jar cvf hello.war *.*,很快就生成了一个名为hello.war的文件,接着把hello.war复制到jboss的安装目录/server/default/deploy/下完成部署。

五、测试
在浏览器的地址栏中输入http://localhost:8080/hello/HelloWorld如果出现HelloWorld字样那么部署成功。

另一个deploy JSP, Servlet, EJB 的文章:

1、下载和安装
 <1>下载可以到www.jboss.org下载,我下的是jboss3.2.1。并且不是那个和tomcat整合的版本。
 <2>安装方法就是将文件解压到硬盘的某个目录下(例如:我的解到 d:jboss-3.2.1)。
2、配置
 <1>首先必须安装jdk。jboss不像weblogic自带java标准开发包。我安装的是1.4  安装目录是C:j2sdk1.4.0 。
 <2>设置环境变量
  <<1>>JAVA_HOME设置为JDK的安装目录(例如:我的为C:j2sdk1.4.0)
  <<2>>classpath的设置:看看我的,大家就知道该包含哪些包了
   C:j2sdk1.4.0lib ools.jar;
   D:jboss-3.2.1serverdefaultlibjavax.servlet.jar;
   D:jboss-3.2.1serverdefaultlibjboss-j2ee.jar;
   .;
   D:jboss-3.2.1clientjbossall-client.jar;
   D:jboss-3.2.1clientjnet.jar;
   D:jboss-3.2.1clientlog4j.jar;
3、运行
 进入jboss3.2.1的bin目录,执行run.bat就可以了。看到出现
 00:59:26,978 INFO  [Server] JBoss (MX MicroKernel) [3.2.1 (build: CVSTag=JBoss_3
 _2_1 date=200305041533)] Started in 17s:595ms
 这样的提示信息就说明启动成功,测试方法如下
 http://localhost:8080/jmx-console 你将看到jmx agent view

4、使用
 <1>html,jsp测试
  jboss的默认web目录是在jboss-3.2.1serverdefaultdeploy下面。下面就介绍测试jsp,servlet,ejb的方法:
  对于测试首先在deploy下建立一个test.war文件夹,然后将html,jsp文件都可以放到这里进行测试
  例如建立一test.jsp如下:
  <%@ page language="java" %>
  <%@ page contentType="text/html;charset=gb2312" %>
  <%@ page import="java.util.*" %>
  <%=new Date().toLocalString()%>
  通过http://localhost:8080/test/test.jsp调用就可得到当前日期时间。
 <2>设置sql server2000的数据源然后在jsp中操调用操作数据库
  <<1>>下载安装sql server2000的jdbc驱动(微软提供)
  <<2>>将mssqlserver,msbase,msutil三个jar文件复制到jboss-3.2.1serverdefaultlib目录下面
  <<3>>将jboss-3.2.1docsexamplesjcamssql-ds.xml复制一份到jboss-3.2.1serverdefaultdeploy下面
      部分修改如下:
      <datasources>
    <local-tx-datasource>
     <jndi-name>ds</jndi-name>
     <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind</connection-url>
     <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
     <user-name>sa</user-name>
     <password></password>
     </local-tx-datasource>
     </datasources>

     上面的配置就是用ds作为数据源的名称,用不带密码的sa用户连接sql server的样板数据库northwind。你可以作适当的修改。
  <<4>>配置完成后,用如下testSql.jsp文件测试数据库操作
   <%@ page language="java" %>
   <%@ page import="javax.naming.*" %>
   <%@ page import="javax.sql.*" %>
   <%@ page import="java.sql.*" %>
   <%!
    javax.sql.DataSource ds;
   %>
 
   <%
 
    try {
     Context ctx = new InitialContext();
     ds = (javax.sql.DataSource)ctx.lookup("java:/ds");
    } catch (Exception e) {
     out.println("erro when connect to java naming api");
    }
 
 
    Connection conn = ds.getConnection();
    Statement st = conn.createStatement();
    String sqlStr = "select * from categories";
    ResultSet rs = st.executeQuery(sqlStr);
    while  ( rs.next() ) {
     out.println(rs.getString("categoryName")+"<br>");
    }
    rs.close();
    st.close();
    conn.close();
   %>
   
   将输出categories表的每条记录的categoryName,值得注意的是在mssql-ds.xml设置的jndi-name是ds,而真正的绑定是
   java:/ds。

 <3> servlet的配置测试
  <<1>>编写并编译如下的简单servlet
  import java.io.*;
  import javax.servlet.*;
  import javax.servlet.http.*;

  public class HelloWorld extends HttpServlet {
   public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("");
    out.println("Hello World");
    out.println("<p><p><p><p><div align='right'>author's email:zhjx_10@hotmail.com</div>");
   }
  }
  <<2>>在test.war文件夹下建立一个WEB-INF目录,里面再建立一个classes目录和web.xml文件目录结构如下:
  [test.war]
   [WEB-INF]
    [classes]
    web.xml
  将编译成功的HelloWorld.class放置到classes目录下,web.xml内容如下:

  <?xml version="1.0" encoding="ISO-8859-1"?>

  <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
   "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
   
  <web-app>
   <servlet>
    <servlet-name>HelloWorld</servlet-name>
    <servlet-class>HelloWorld</servlet-class>        
   </servlet>
    <servlet-mapping>
    <servlet-name>HelloWorld</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
   </servlet-mapping>
  </web-app>

  通过调用http://localhost:8080/test/HelloWorld 就可以看到hello world的输出
 
 <4>session bean的测试(Hello)
  这是一个简单的stateless session bean的测试
  <<1>>Hello.java

   import java.rmi.RemoteException;
   import javax.ejb.EJBObject;

   public interface Hello extends javax.ejb.EJBObject {
    public String hello() throws java.rmi.RemoteException;
   }

  <<2>>HelloHome.java

   import java.rmi.RemoteException;

   public interface HelloHome extends javax.ejb.EJBHome {
    Hello create() throws java.rmi.RemoteException,javax.ejb.CreateException;
   }

  <<3>>HelloBean.java
   
   import javax.ejb.SessionBean;
   import javax.ejb.SessionContext;

   public class HelloBean implements javax.ejb.SessionBean {
    private SessionContext ctx;
 
    public void ejbCreate() {
     System.out.println("ejbCreate()");
    }
 
    public void ejbRemove() {
     System.out.println("ejbRemove()");
    }
 
    public void ejbActivate() {
     System.out.println("ejbActivate()");
    }
 
    public void ejbPassivate() {
     System.out.println("ejbPassivate()");
    }
 
    public void setSessionContext(javax.ejb.SessionContext ctx) {
     his.ctx = ctx;
    }
 
    public String hello() {
     System.out.println("hello()");
     return "hello,world";
    }
   }
  <<4>>ejb-jar.xml
   <?xml version="1.0"?>
   <!DOCTYPE ejb-jar PUBLIC
    '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
    'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

   <ejb-jar>
    <enterprise-beans>
     <session>
      <ejb-name>Hello</ejb-name>
      <home>HelloHome</home>
      <remote>Hello</remote>
      <ejb-class>HelloBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
     </session>
    </enterprise-beans>
   </ejb-jar>
  <<5>>jboss.xml
   <?xml version="1.0" encoding="UTF-8"?>
   <jboss>
    <enterprise-beans>
     <session>
      <ejb-name>Hello</ejb-name>
      <jndi-name>HelloEJB</jndi-name>
     </session>
    </enterprise-beans>
   </jboss>
  <<6>>

  编译3个.java文件后按照以下路径存放文件(假设放到d:sessionEjb下面)
  d:sessionEjbHello.class
  d:sessionEjbHelloBean.class
  d:sessionEjbHelloHome.class
  d:sessionEjbMETA-INFejb-jar.xml
  d:sessionEjbMETA-INFjboss.xml

  然后打包d:sessionEjbjar cvf helloejb.jar *.*,打包后将helloejb.jar放到deploy目录下面,会在控制台看到如下输出

  11:35:30,815 INFO  [EjbModule] Creating
  11:35:30,825 INFO  [EjbModule] Deploying Hello
  11:35:30,835 INFO  [StatelessSessionContainer] Creating
  11:35:30,835 INFO  [StatelessSessionInstancePool] Creating
  11:35:30,835 INFO  [StatelessSessionInstancePool] Created
  11:35:30,845 INFO  [StatelessSessionContainer] Created
  11:35:30,845 INFO  [EjbModule] Created
  11:35:30,845 INFO  [EjbModule] Starting
  11:35:30,845 INFO  [StatelessSessionContainer] Starting
  11:35:30,905 INFO  [StatelessSessionInstancePool] Starting
  11:35:30,905 INFO  [StatelessSessionInstancePool] Started
  11:35:30,905 INFO  [StatelessSessionContainer] Started
  11:35:30,905 INFO  [EjbModule] Started
  11:35:30,905 INFO  [EJBDeployer] Deployed: file:/D:/jboss-3.2.1/server/default/d
  eploy/helloejb.jar
  11:35:30,925 INFO  [MainDeployer] Deployed package: file:/D:/jboss-3.2.1/server/
  default/deploy/helloejb.jar

  表明配置没有错误信息


  测试的客户端代码

  import javax.naming.InitialContext;
  import javax.naming.Context;
  import javax.naming.NamingException;
  import javax.ejb.CreateException;
  import java.rmi.RemoteException;
  import javax.rmi.PortableRemoteObject;
  import java.util.Properties;
  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;


  public class HelloWorldClient extends JFrame implements ActionListener {
   public HelloWorldClient() {
    addWindowListener(new WindowAdapter() {
     public void windowClosing(WindowEvent e) {
      System.exit(0);
     }
    });
    setTitle("EJBClient");
    setSize(300,200);
    Container contentPane = getContentPane();
    area = new JTextArea(6,20);
    subButton = new JButton("Say hello to EJB");
    subButton.setActionCommand("sya");
    subButton.addActionListener(this);
    contentPane.add(area,"Center");
    contentPane.add(subButton,"South");
   }
   public void actionPerformed(ActionEvent e) {
    if ( e.getActionCommand().equals("sya") ) {
     ejbSays = getEJBInfo();
     area.append(ejbSays + " ");
    }
   }
  
   public String getEJBInfo() {
    try {
     Context jndiContext = getInitialContext();
     Object ref = jndiContext.lookup("HelloEJB");
     HelloHome home = (HelloHome)PortableRemoteObject.narrow(ref,HelloHome.class);
     Hello hw= home.create();
     ejbSays = hw.hello();
   
    } catch (java.rmi.RemoteException e) {
     e.printStackTrace();
    } catch ( Throwable t ) {
     t.printStackTrace();
    } finally {
   
    }
    return ejbSays;
   }
 
   public static Context getInitialContext() throws Exception {
    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY,
             "org.jnp.interfaces.NamingContextFactory");
           p.put(Context.PROVIDER_URL, "localhost:1099");
           return new InitialContext(p);
   }
       
   public static void main(String[] args) {
           JFrame win = new HelloWorldClient();
           win.pack();
           win.setVisible(true);
   }
       
   private String ejbSays="";
   private JTextField info;
   private JButton subButton;
   private JTextArea area;
  }

  作了一个简单的gui,主要注意的是getInitalContext()方法jboss的连接参数的设置和getEJBInfo()方法对ejb的调用

  将编译好的HelloWorldClient.class,HelloWorldClient$1.class,放置到d:sessionbean目录下(如果放到别的地方,确定可以
  通过路径找到HelloBean,HelloHome,Hello类

  d:sessionbeanjava HelloWorldClient

  点按钮就会返回hello world(做gui是为了复习一下以前的知识)

 <5>cmp的测试
  此cmp继续使用上面的数据源对应的northwind数据库,要在其中建一个表cd。
  <<1>>CD.java

   import javax.ejb.EJBObject;
   import java.rmi.RemoteException;

   public interface CD extends EJBObject {

    public Integer getId() throws RemoteException;
    public void setId(Integer id) throws RemoteException;
 
    public String getTitle() throws RemoteException;
    public void setTitle(String title) throws RemoteException;

    public String getArtist() throws RemoteException;
    public void setArtist(String artist) throws RemoteException;

    public String getType() throws RemoteException;
    public void setType(String type) throws RemoteException;

    public String getNotes() throws RemoteException;
    public void setNotes(String notes) throws RemoteException;
   }

  <<2>>CDHome.java

   import javax.ejb.EJBHome;
   import javax.ejb.CreateException;
   import javax.ejb.FinderException;
   import java.rmi.RemoteException;
   import java.util.Collection;

   public interface CDHome extends EJBHome {
    public CD create(Integer id,String  title,String artist,String type,String notes) throws RemoteException,CreateException;

    public CD findByPrimaryKey(Integer id) throws RemoteException,FinderException;

    public Collection findByType(String type) throws RemoteException,FinderException;

    
   }

  <<3>>CDBean.java
   import javax.ejb.EntityBean;
   import javax.ejb.EntityContext;
   import java.rmi.RemoteException;
   import javax.ejb.CreateException;

   public abstract class CDBean implements EntityBean {
    EntityContext ctx;

    public Integer id;
    public String title;
    public String artist;
    public String type;
    public String notes;

    public Integer ejbCreate(Integer id,String title,String artist,String type,String notes) throws CreateException{
     setId(id);
     setTitle(title);
     setArtist(artist);
     setType(type);
     setNotes(notes);
     return id;
    }

    public void ejbPostCreate(Integer id,String title,String artist,String type,String notes) {
    }

    public abstract String getTitle() ;

    public abstract void setTitle(String _title) ;
 
    public abstract Integer getId() ;

    public abstract void setId(Integer _id);
 
    public abstract String getArtist();

    public abstract void setArtist(String _artist) ;

    public abstract String getType() ;
 
    public abstract void setType(String _type) ;

    public abstract String getNotes() ;

    public abstract void setNotes(String _notes);

    public void setEntityContext(EntityContext ctx) {
     this.ctx = ctx;
    }

    public void unsetEntityContext() {
     ctx = null;
    }

    public void ejbActivate() {}
    public void ejbPassivate() {}
    public void ejbLoad() {}
    public void ejbStore() {}
    public void ejbRemove() {}
   }

  <<4>>ejb-jar.xml

   <?xml version="1.0"?>

   <!DOCTYPE ejb-jar PUBLIC
   "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
   "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

   <ejb-jar>
    <display-name>MusicCDs</display-name>
    <enterprise-beans>
     <entity>
      <description>Modles a music CD</description>
      <ejb-name>CDBean</ejb-name>
      <home>CDHome</home>
      <remote>CD</remote>
      <ejb-class>CDBean</ejb-class>
      <persistence-type>Container</persistence-type>
      <prim-key-class>java.lang.Integer</prim-key-class>
      <reentrant>False</reentrant>
      <cmp-version>2.x</cmp-version>
      <abstract-schema-name>cd</abstract-schema-name>
      <cmp-field><field-name>id</field-name></cmp-field>
      <cmp-field><field-name>title</field-name></cmp-field>
      <cmp-field><field-name>artist</field-name></cmp-field>
      <cmp-field><field-name>type</field-name></cmp-field>
      <cmp-field><field-name>notes</field-name></cmp-field>

      <primkey-field>id</primkey-field>

      <query>
       <query-method>
        <method-name>findByType</method-name>
        <method-params>
         <method-param>java.lang.String</method-param>
        </method-params>
       </query-method>
       <ejb-ql><![CDATA[
        SELECT OBJECT(A)
        FROM cd AS A
        WHERE A.type=?1
       ]]></ejb-ql>
      </query>
     </entity>
    </enterprise-beans>

    <assembly-descriptor>
     <container-transaction>
      <method>
       <ejb-name>CDBean</ejb-name>
       <method-name>*</method-name>
      </method>
      <trans-attribute>Required</trans-attribute>
     </container-transaction>
    </assembly-descriptor>
   </ejb-jar>

  <<5>>jboss.xml

   <?xml version="1.0" encoding="UTF-8"?>
 
   <!DOCTYPE jboss PUBLIC
    "-//JBoss//DTD JBOSS 3.0//EN"
    "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">


   <jboss>
    <enterprise-beans>
     <entity>
      <ejb-name>CDBean</ejb-name>
      <jndi-name>ejb/cdbean</jndi-name>
     </entity>
    </enterprise-beans>
   </jboss>

  <<6>>jbosscmp-jdbc.xml

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

   <!DOCTYPE jbosscmp-jdbc PUBLIC  
    "-//JBoss//DTD JBOSSCMP-JDBC 3.0//EN"
   "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_0.dtd">

   <jbosscmp-jdbc>
    <defaults>
     <datasource>java:/ds</datasource>
     <datasource-mapping>MS SQLSERVER2000</datasource-mapping>
     <create-table>true</create-table>
     <remove-table>true</remove-table>
     <pk-constraint>true</pk-constraint>
     <preferred-relation-mapping>foreign-key</preferred-relation-mapping>
    </defaults>

    <enterprise-beans>

     <entity>
      <ejb-name>CDBean</ejb-name>
      <table-name>cd</table-name>

      <cmp-field>
       <field-name>id</field-name>
       <column-name>id</column-name>
      </cmp-field>

      <cmp-field>
       <field-name>title</field-name>
       <column-name>title</column-name>
      </cmp-field>

      <cmp-field>
       <field-name>artist</field-name>
       <column-name>artist</column-name>
      </cmp-field>

      <cmp-field>
       <field-name>type</field-name>
       <column-name>type</column-name>
      </cmp-field>

      <cmp-field>
       <field-name>notes</field-name>
       <column-name>notes</column-name>
      </cmp-field>
     </entity>

    </enterprise-beans>

  
   </jbosscmp-jdbc>

   需要解释的是
   <create-table>true</create-table>
   <remove-table>true</remove-table>
   会在部署的时候自动在库中建立数据表,而在删除的时候同时删除对应的表

  <<7>>编译部署
   编译3个.java文件,按照下面的目录结构存放(假设放在d:cmpbean下面)
   d:cmpbeanCD.class
   d:cmpbeanCDHome.class
   d:cmpbeanCDBean.class
   d:cmpbeanMETA-INFejb-jar.xml
   d:cmpbeanMETA-INFjboss.xml
   d:cmpbeanMETA-INFjbosscmp-jdbc.xml

   打包:d:cmpbeanjar cvf cdejb.jar *.*

   将cdejb.jar复制到deploy目录下

  <<8>>客户端代码测试

   import javax.naming.InitialContext;
   import javax.naming.Context;
   import javax.naming.NamingException;
   import javax.ejb.CreateException;
   import java.rmi.RemoteException;
   import javax.rmi.PortableRemoteObject;
   import java.util.Properties;
   import java.util.*;

   public class CDClient {
    public static Context getInitialContext() throws Exception {
     Properties p = new Properties();
     p.put(Context.INITIAL_CONTEXT_FACTORY,
               "org.jnp.interfaces.NamingContextFactory");
     p.put(Context.PROVIDER_URL, "localhost:1099");
     return new InitialContext(p);
    }

    public static void main(String[] args) {
     try {
      Context jndiContext = getInitialContext();
      Object ref= jndiContext.lookup("ejb/cdbean");
      CDHome home = (CDHome)PortableRemoteObject.narrow(ref,CDHome.class);
      home.create(new Integer(100),"Bohn jove","rock and roll","rock","a good type");
      home.create(new Integer(200),"黑宝","rock","rock","roll star");
      home.create(new Integer(300),"mike jackson","sssss","iiop","none");
      Collection c = home.findByType("rock");
      Iterator i = c.iterator();
      while ( i.hasNext() ) {
       String ss = ( (CD)javax.rmi.PortableRemoteObject.narrow(i.next(),CD.class)).getNotes();
       System.out.println(ss);
      }

     } catch (java.rmi.RemoteException e) {
      e.printStackTrace();
     } catch (Throwable t) {
      t.printStackTrace();
     } finally {
     }
    }
   }

   请确保通过类路径可以找到CD.class,CDHome.Class.
   执行java CDclient 将看到如下输出:

   D:cmpbean>java CDClient
   a good type
   roll star

   D:cmpbean>

漏洞挖掘实战:从信息收集到攻击面管理的系统性方法 在网络安全领域,信息收集是渗透测试和漏洞挖掘的基础环节,其核心原理在于通过系统化的侦察技术,全面绘制目标的数字资产地图,从而识别潜在的攻击面。这一过程的技术价值在于将看似无序的资产信息转化为结构化的威胁情报,显著提升后续漏洞挖掘的精准度和效率。在实际应用场景中,无论是企业安全评估、红队演练还是漏洞赏金(SRC)项目,高效的信息收集工作流都是成功的关键。通过自动化工具链与人工深度分析相结合,安全工程师能够从子域名、IP资产、Web指纹、证书日志及源代码仓库等多个维度,构建目标的完整攻击面视图,并基于风险模型进 阅读详情

相关推荐

红队实战:信息收集从侦察到资产测绘的工程化流程

信息收集是网络安全攻防对抗中的基础环节,其本质是侦察而非攻击,核心在于以低噪音方式全面绘制目标的数字资产地图。从技术原理上看,它遵循从被动到主动、从外部到内部的工程化流程,综合利用证书透明度日志、DNS历史记录、网络空间测绘引擎等公开情报源进行被动侦察,再通过可控的主动探测验证资产存活与细节。这一过程的技术价值在于为后续的漏洞探测、权限提升等深度测试提供精准的“作战地图”,避免盲目扫描导致的效率低下或触发告警。在应用场景上,它广泛应用于渗透测试、红队演练和攻击面管理。本文聚焦于实战,详细拆解了以子域名发现、

weixin_30279315的博客 437

jboss与tomcat的使用经验总结

· 一:jboss简介jboss是一套可以基于j2ee框架的全套解决方案,他包括JBoss/Server,JBoss/spyderMQ, JBoss/Jaws,JBoss/Zola,JBoss/Zoap,JBoss/Castor,JBoss/Tomcat。这些产品可以非常合理的搭建基于j2ee框架的软件产品和软件工程。 虽然他的诞生才一年多,但是就像apache一样,他是完全公开源代码的,他是真正...

bei79的专栏 333

SRC实战:RCE漏洞挖掘从入门到精通,构建系统化攻击框架

远程代码执行(RCE)是Web安全领域的核心高危漏洞,其本质是攻击者通过构造恶意输入,诱使目标服务器执行任意系统命令或代码。理解其原理需要从应用安全的基础切入,即用户输入未经充分验证便直接传递给系统解释器或执行环境。从技术价值看,RCE漏洞直接威胁服务器控制权,是渗透测试和漏洞挖掘中优先级最高的目标,常出现在命令注入、反序列化、模板注入等场景。在SRC(安全应急响应中心)实战和红队评估中,系统化的攻击面测绘与漏洞链思维是高效挖掘RCE的关键。本文聚焦于构建从信息收集到漏洞利用的完整实战路径,深入剖析命令注入

weixin_34101784的博客 352

JBoss和Tomcat 整合

JBoss 和Tomcat 整合   1.原理介绍   Tomcat 通过JNDI 调用Jboss 中的bean 信息 ,当然在这个过程中Tomcat 需要一些初始化参数 来指明jndi 参数,所一第一步就是在JVM 就是Tomcat 启动时加载对应的参数.   2.在eclipse 中Tomcat 和Jboss 集成    step 1: 的启动参数中加入   -Djav...

今天最成功 498

2024年SRC漏洞挖掘实战指南:从信息收集到逻辑漏洞的精细化狩猎

在网络安全领域,漏洞挖掘是评估系统安全性的核心实践,其本质在于通过模拟攻击者行为,发现软件或系统中存在的设计缺陷与安全弱点。其技术原理通常围绕输入验证、权限控制、业务逻辑等环节展开,通过构造异常数据或非预期操作流程,探测系统的异常响应。掌握漏洞挖掘技术对于提升系统防御能力、构建主动安全体系具有重要价值,广泛应用于渗透测试、红蓝对抗、安全众测等场景。本文聚焦于SRC实战,深入剖析了信息收集、工具链配置等基础环节,并重点探讨了逻辑漏洞与SQL注入等经典攻击面的现代挖掘技巧,旨在为安全研究人员提供一套可复现的精细

weixin_30755393的博客 439

Web渗透测试信息收集实战:从域名测绘到攻击面分析的完整方法论

在网络安全领域,信息收集是渗透测试的基石,其核心在于通过系统化方法绘制目标的资产地图与攻击面清单。其原理遵循由外而内、由浅入深的漏斗模型,结合开源情报(OSINT)收集与主动技术探测两大手段。技术价值在于将看似零散的公开数据与探测结果进行关联分析,从而精准定位脆弱点,极大提升后续渗透测试的成功率。应用场景广泛覆盖企业安全评估、红队演练及漏洞挖掘。本文聚焦Web渗透测试场景,深入探讨了子域名发现、CDN识别、端口扫描及Web应用深度挖掘等关键环节,并融入了对**端口扫描**策略与**服务指纹识别**技术的详细

keke1314520的博客 554

tomcat和jboss对比

http://blog.csdn.net/u013573133/article/details/23379565    Tomcat:应用也算非常广泛的web服务器,支持部分j2ee,免费,出自apache基金组织,支持Servlet、jsp。       JBoss:开源的应用服务器,比较受人喜爱,免费(文档要收费)     JBoss还具有如下六大优点: 1、JBoss是免

毛台 2万+

JBOSS+TOMCAT集成开发环境。完整版

JBOSS+TOMCAT集成开发环境。完整版

Tech : jboss4。0+tomcat5。0创建第一个ejb

 1...用下面的参考创建 EJB:http://blog.csdn.net/oyoung/archive/2006/04/24/675043.aspx注意:在 Project 的 "Java Build Path" -> "Libraries" 中增加 "External Jars":  %JBOSS_HOME%/server/all/lib/jboss-j2ee.jar在 XDocle

门门雨 755

下载和安装jboss-4.0.4.GA 服务器

下载和安装jboss-4.0.4.GA 服务器

J2EE应用服务器Jboss+Tomcat安装攻略

JBoss+Tomcat已经成为一个免费的开源的稳定的J2EE服务器,虽然在JBoss中部署J2EE没有商用J2EE服务器那么方便,基本都是通过手工编写XML配置文件,但是这样可以让我们更容易理解J2EE的来龙去脉。本文以Jboss 2为例,介绍了Jboss+Tomcat的安装方法。

Tech : 终于可以显示 Servlet 了

对于一个弱鸟来说,不简单啊, Jboss4.04 + Tomcat5.0. 用Myeclipse先创建一个j2ee web project,比如"Servtest" . 然后添加一个myeclipse 的 servlet, 比如 "TestFeng",MyEclipse 在 web.xml中创建的下面这个有点问题:(url-pattern 加了一个 /servlet/, 到后面没法显示,不知道为什

门门雨 631

项目管理-(补充)七种基本质量工具

七种基本质量工具,用于PDCA循环的架构内 解决与质量相关的问题,分为老七工具和新七工具。 1)老七种:刘英只点劣质茶(流程图、因果图、直方图、散点图、帕累托图、控制图、核查表)2)新七种:锯树联亲测动优(矩阵图、树形图、关联图、亲和图、过程决策程序图、活动网络图、优先矩阵)

weixin_42081167的博客 4604

tech resource

=======================java ======================: 官方文档: http://download.oracle.com/javase/6/docs IBM,Java 多线程与并发编程专题: http://www.ibm.com/developerworks/cn/java/j-concurrent/?ca=j-r 精华blog...

iteye_14078的博客 146

解决PADs VX2.7安装中的License失效与软件卡死问题

本文详细解析了PADs VX2.7安装过程中常见的License失效与软件卡死问题,提供了从破解工具选择、环境变量设置到输入法兼容性调整等实用解决方案。特别推荐使用Siemens EDA系列新版破解工具,并分享性能调优与定期维护技巧,帮助工程师高效解决安装难题。

weixin_29234239的博客 814

10X Genomics数据实战:手把手教你用Seurat处理单细胞PBMC数据(附完整代码)

本文详细介绍了如何使用Seurat处理10X Genomics的单细胞PBMC数据,从数据获取、质控到降维分析和细胞分群的全流程。通过实战代码演示,帮助研究者掌握单细胞RNA测序数据分析的核心技术,提升对细胞异质性的理解。

weixin_29053577的博客 254

跟著Qcadoo MES系统学习产品设计

Manufacturing Execution System,MES是工业4.0的核心系统,智能制造的大脑,跟踪Qcadoo MES学习产品设计001

通达的博客 2140

芒果YOLOv12改进108:基于QARep提出多种<独家原创结构>:ReNLANQARep, QARep, CSCQARep, C3QARep, C2fQARep等,即插即用提升小目标检测

芒果YOLOv12改进108:基于QARep提出多种<独家原创结构>:ReNLANQARep, QARep, CSCQARep, C3QARep, C2fQARep等,即插即用提升小目标检测

包括YOLOv5、YOLOv7、YOLOv8等模型改进 755

微软数据科学家面试底层逻辑:工程化思维与业务直觉的实战拆解

数据科学家不是算法工程师,而是连接技术、业务与工程的枢纽角色。理解统计建模原理只是起点,真正决定落地效果的是对数据血缘、特征漂移、AB实验污染等生产级问题的诊断能力;其技术价值在于将模糊业务目标(如‘提升留存’)转化为可归因、可迭代、可量化的数据方案;典型应用场景覆盖推荐系统归因、会议产品健康度评估、实时特征监控等微软核心业务链路。本文聚焦‘Science in Production’这一关键范式,深入解析数据溯源能力与模型诊断能力在真实面试中的考察逻辑与训练路径。

weixin_30800987的博客 378

如何用Python打造PubMed API客户端:科研文献检索自动化实践

PubMed提供了官方的Entrez E-utilities API接口,支持程序化检索文献,但直接调用API需处理请求重试、参数封装、数据解析等问题。批量获取文献ID及结构化详情(标题、作者、DOI等)内置重试机制,应对网络波动或API限流统一数据输出格式,便于后续分析(如文献计量、AI文本处理)灵活适配不同检索需求(如指定数据库、结果数量)本文实现的PubMed API客户端,通过封装API请求、重试机制、数据解析,让科研文献检索从“手动点击”变为“代码自动化”。

ASKCOS博客 358

STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度

详细介绍了STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度。

kevin1499的博客 5592

关于Tomcat与Jboss部署详解

关于Tomcat与Jboss部署,很多做Java开发的编程人员都会遇到,我在这里做一下总结归纳。 一.Tomcat部署,不区分系统,无论是Server还是Window系统的,部署都一致。    1.首先配置jdk,不同版本的jdk,配置不同,如jdk1.6以下的jdk版本不需要进行安装,直接在PATH配置路径即可, jdk1.7以上的版本需要进行安装,然后在PAHT中配置路径。    JA...

yang_yuan123的博客 1105

linux系统下XDMA驱动的安装与测试问题总结

先看两个常见的问题。一个是驱动安装问题,一个是驱动测试错误;error 512 能识别PCIE的设备,但是The kernel modle installed correctly, but no devices were recognized.

whm128的博客 3806

中间件安全基础(二)Tomcat & jBoss

目录 前言: 正文 中间件 —— Tomcat 1. Tomcat简介 2.Tomcat漏洞 0x01. Tomcat 任意文件写入(CVE-2017-12615) 0x02.Tomcat 远程代码执行(CVE-2019-0232) 0x03.Tomcat + 弱口令 && 后台getshell漏洞 0x04:Tomcat manager A...

m0_46304840的博客 1126

基于XDMA 的PCIE读写DDR

基于XDMA 的PCIE读写DDR 概述:   想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。 实现功能:PC通过PCIE读写DDR,同时用户通过逻辑代码可以读取被写入DDR内的数据(我是通过VIO实现DDR任意地址,任意数据大小的读取。)。 实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 P

Crazzy_M的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: Tech : 终于创建了一个EJB HelloWorld
下一篇: Tech : 终于可以显示 Servlet 了
hellworldfwy
博客等级 码龄21年 1粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值