당신이 은 EJB에있는 파일 시스템 액세스로부터을 허용하는 이유는 응용 프로그램이 (자바 EE)에서 실행하는 방식을 통제 컨테이너이 없다는 것입니다. 예를 들어, 응용 프로그램이 서버 클러스터에서 실행될 수 있습니다.이 경우 한 서버의 일부 개체를 디렉토리에 저장하면 거의 사용하지 않을 수 있습니다. 물론 네트워크 파일 시스템을 사용하고 있으므로 제한이 적용되지 않을 수도 있습니다.
하나의 옵션은 사용 당신의 컨테이너와 함께 제공되는 JNDI 구현 될 수있다. 당신은 가능성이 일부 JNDI 위치에서 원시 byte[]
배열을 저장할 수 있습니다, 그래서 당신은 항상 객체의 직렬화 된 형식 아래 절약 할 수있다 :이 나중에 조회 할 수 있으며 개체로 변환 다시
ByteArrayOutputStream baos= new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(myObj);
//Now save into JNDI
new InitialContext().bind("path/to/myobject", baos.toByteArray());
를 :
byte[] bs = (byte[]) new InitialContext().lookup("path/to/myobject");
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bs));
MyObj myObj = (MyObj) ois.readObject();
또는 당신은 XML 문자열로 인스턴스를 인코딩 JNDI에 그것을 저장 java.beans
지속적 XML (즉 XMLDecoder
, XMLEncoder
)를 사용할 수 있습니다.
데이터베이스에 BLOB가있을 필요는 없습니다. SQL Server 2008은 기본적으로 파일을 DB 서버의 폴더로 덤프하지만 데이터베이스를 통해 노출시키는 파일 스트림 저장소를 지원합니다. http://blogs.msdn.com/rdoherty/archive/2007/10/12/getting-traction-with-sql-server-2008-filestream.aspx – pjp